rgeo 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.rdoc +5 -0
- data/README.rdoc +1 -0
- data/Version +1 -1
- data/lib/rgeo/feature/geometry.rb +18 -5
- data/lib/rgeo/geos/ffi_classes.rb +8 -2
- data/lib/rgeo/wkrep/wkt_generator.rb +4 -2
- data/test/common/point_tests.rb +2 -0
- metadata +2 -2
data/History.rdoc
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
=== 0.3.1 / 2011-05-24
|
2
|
+
|
3
|
+
* Running a == operator comparison between a geometry and a non-geometry caused an exception for some implementations. Fixed. (Reported by Daniel Hackney.)
|
4
|
+
* Clarified the specifications for operators on geometry objects.
|
5
|
+
|
1
6
|
=== 0.3.0 / 2011-05-23
|
2
7
|
|
3
8
|
* RGeo can now use GEOS via the ffi-geos gem, in addition to RGeo's built-in C integration. The ffi-geos integration is experimental right now, since ffi-geos is still in early beta. In particular, I do not recommend using it in JRuby yet (as of JRuby 1.6.1), because an apparent JRuby bug (JRUBY-5813) causes intermittent segfaults. However, once the issue is resolved (soon, I hope, since I've already submitted a patch to the JRuby team), we should have GEOS functional on JRuby.
|
data/README.rdoc
CHANGED
@@ -93,6 +93,7 @@ installation prefix directory using the "--with-proj-dir" option.
|
|
93
93
|
The RGeo suite of tools is evolving rapidly. The current to-do list for
|
94
94
|
the core library includes:
|
95
95
|
|
96
|
+
* YAML and Marshal serialization support.
|
96
97
|
* Better JRuby support.
|
97
98
|
* Ellipsoidal geography implementation, possibly utilizing geographiclib.
|
98
99
|
* Windows build support.
|
data/Version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
@@ -578,28 +578,41 @@ module RGeo
|
|
578
578
|
end
|
579
579
|
|
580
580
|
|
581
|
-
#
|
581
|
+
# This operator should behave almost the same as the equals? method.
|
582
|
+
# The difference is that the == operator is required to handle rhs
|
583
|
+
# values that are not geometry objects (returning false in such cases)
|
584
|
+
# in order to fulfill the standard Ruby contract for the == operator,
|
585
|
+
# whereas the equals? method may assume that any rhs is a geometry.
|
582
586
|
|
583
587
|
def ==(rhs_)
|
584
|
-
equals?(rhs_)
|
588
|
+
rhs_.kind_of?(::RGeo::Feature::Instance) ? equals?(rhs_) : false
|
585
589
|
end
|
586
590
|
|
587
591
|
|
588
|
-
#
|
592
|
+
# If the given rhs is a geometry object, this operator must behave
|
593
|
+
# the same as the difference method. The behavior for other rhs
|
594
|
+
# types is not specified; an implementation may choose to provide
|
595
|
+
# additional capabilities as appropriate.
|
589
596
|
|
590
597
|
def -(rhs_)
|
591
598
|
difference(rhs_)
|
592
599
|
end
|
593
600
|
|
594
601
|
|
595
|
-
#
|
602
|
+
# If the given rhs is a geometry object, this operator must behave
|
603
|
+
# the same as the union method. The behavior for other rhs types
|
604
|
+
# is not specified; an implementation may choose to provide
|
605
|
+
# additional capabilities as appropriate.
|
596
606
|
|
597
607
|
def +(rhs_)
|
598
608
|
union(rhs_)
|
599
609
|
end
|
600
610
|
|
601
611
|
|
602
|
-
#
|
612
|
+
# If the given rhs is a geometry object, this operator must behave
|
613
|
+
# the same as the intersection method. The behavior for other rhs
|
614
|
+
# types is not specified; an implementation may choose to provide
|
615
|
+
# additional capabilities as appropriate.
|
603
616
|
|
604
617
|
def *(rhs_)
|
605
618
|
intersection(rhs_)
|
@@ -181,11 +181,17 @@ module RGeo
|
|
181
181
|
|
182
182
|
|
183
183
|
def equals?(rhs_)
|
184
|
+
return false unless rhs_.kind_of?(::RGeo::Feature::Instance)
|
184
185
|
fg_ = factory._convert_to_fg_geometry(rhs_)
|
186
|
+
if !fg_
|
187
|
+
false
|
185
188
|
# GEOS has a bug where empty geometries are not spatially equal
|
186
189
|
# to each other. Work around this case first.
|
187
|
-
|
188
|
-
|
190
|
+
elsif fg_.empty? && @fg_geom.empty?
|
191
|
+
true
|
192
|
+
else
|
193
|
+
@fg_geom.eql?(fg_)
|
194
|
+
end
|
189
195
|
end
|
190
196
|
alias_method :==, :equals?
|
191
197
|
|
@@ -63,9 +63,10 @@ module RGeo
|
|
63
63
|
# Z is present); or <tt>:wkt12</tt>, indicating SFS 1.2 WKT
|
64
64
|
# tags that indicate the presence of Z and M in a separate token.
|
65
65
|
# Default is <tt>:wkt11</tt>.
|
66
|
+
# This option can also be specified as <tt>:type_format</tt>.
|
66
67
|
# [<tt>:emit_ewkt_srid</tt>]
|
67
68
|
# If true, embed the SRID of the toplevel geometry. Available only
|
68
|
-
# if <tt>:
|
69
|
+
# if <tt>:tag_format</tt> is <tt>:ewkt</tt>. Default is false.
|
69
70
|
# [<tt>:square_brackets</tt>]
|
70
71
|
# If true, uses square brackets rather than parentheses.
|
71
72
|
# Default is false.
|
@@ -83,7 +84,7 @@ module RGeo
|
|
83
84
|
# documentation for the options that can be passed.
|
84
85
|
|
85
86
|
def initialize(opts_={})
|
86
|
-
@tag_format = opts_[:tag_format] || :wkt11
|
87
|
+
@tag_format = opts_[:tag_format] || opts_[:type_format] || :wkt11
|
87
88
|
@emit_ewkt_srid = opts_[:emit_ewkt_srid] ? true : false if @tag_format == :ewkt
|
88
89
|
@square_brackets = opts_[:square_brackets] ? true : false
|
89
90
|
@convert_case = opts_[:convert_case]
|
@@ -94,6 +95,7 @@ module RGeo
|
|
94
95
|
def tag_format
|
95
96
|
@tag_format
|
96
97
|
end
|
98
|
+
alias_method :type_format, :tag_format
|
97
99
|
|
98
100
|
# Returns whether SRID is embedded. See WKTGenerator for details.
|
99
101
|
def emit_ewkt_srid?
|
data/test/common/point_tests.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: rgeo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.3.
|
5
|
+
version: 0.3.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Daniel Azuma
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-05-
|
13
|
+
date: 2011-05-24 00:00:00 Z
|
14
14
|
dependencies: []
|
15
15
|
|
16
16
|
description: RGeo is a geospatial data library for Ruby. It provides an implementation of the Open Geospatial Consortium's Simple Features Specification, used by most standard spatial/geographic data storage systems such as PostGIS. A number of add-on modules are also available to help with writing location-based applications using Ruby-based frameworks such as Ruby On Rails.
|