GeoRuby 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +1 -1
- data/lib/geo_ruby/shp4r/shp.rb +1 -1
- data/lib/geo_ruby/simple_features/geometry_collection.rb +1 -1
- data/lib/geo_ruby/simple_features/line_string.rb +2 -2
- data/lib/geo_ruby/simple_features/linear_ring.rb +1 -16
- data/lib/geo_ruby/simple_features/multi_line_string.rb +2 -2
- data/lib/geo_ruby/simple_features/multi_point.rb +2 -2
- data/lib/geo_ruby/simple_features/multi_polygon.rb +2 -2
- data/lib/geo_ruby/simple_features/point.rb +8 -10
- data/lib/geo_ruby/simple_features/polygon.rb +10 -2
- data/rakefile.rb +1 -1
- data/test/test_simple_features.rb +22 -4
- data/tools/shp2sql.rb +1 -0
- metadata +2 -2
data/README
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
=GeoRuby
|
2
|
-
This is GeoRuby 1.2.
|
2
|
+
This is GeoRuby 1.2.1. It is intended as a holder for data returned from PostGIS and the Spatial Extensions of MySql. The data model roughly follows the OGC "Simple Features for SQL" specification (see http://www.opengis.org/docs/99-049.pdf), although without any kind of advanced functionalities (such as geometric operators or reprojections).
|
3
3
|
|
4
4
|
===Available data types
|
5
5
|
The following geometric data types are provided :
|
data/lib/geo_ruby/shp4r/shp.rb
CHANGED
@@ -281,7 +281,7 @@ module GeoRuby
|
|
281
281
|
|
282
282
|
#A SHP record : contains both the geometry and the data fields (from the DBF)
|
283
283
|
class ShpRecord
|
284
|
-
|
284
|
+
attr_reader :geometry , :data
|
285
285
|
|
286
286
|
def initialize(geometry, data)
|
287
287
|
@geometry = geometry
|
@@ -113,7 +113,7 @@ module GeoRuby
|
|
113
113
|
|
114
114
|
#creates a new GeometryCollection from an array of geometries
|
115
115
|
def self.from_geometries(geometries,srid=DEFAULT_SRID,with_z=false,with_m=false)
|
116
|
-
geometry_collection =
|
116
|
+
geometry_collection = new(srid,with_z,with_m)
|
117
117
|
geometry_collection.concat(geometries)
|
118
118
|
geometry_collection
|
119
119
|
end
|
@@ -131,14 +131,14 @@ module GeoRuby
|
|
131
131
|
|
132
132
|
#Creates a new line string. Accept an array of points as argument
|
133
133
|
def self.from_points(points,srid=DEFAULT_SRID,with_z=false,with_m=false)
|
134
|
-
line_string =
|
134
|
+
line_string = new(srid,with_z,with_m)
|
135
135
|
line_string.concat(points)
|
136
136
|
line_string
|
137
137
|
end
|
138
138
|
|
139
139
|
#Creates a new line string. Accept a sequence of points as argument : ((x,y)...(x,y))
|
140
140
|
def self.from_coordinates(points,srid=DEFAULT_SRID,with_z=false,with_m=false)
|
141
|
-
line_string =
|
141
|
+
line_string = new(srid,with_z,with_m)
|
142
142
|
line_string.concat( points.collect{|point_coords| Point.from_coordinates(point_coords,srid,with_z,with_m) } )
|
143
143
|
line_string
|
144
144
|
end
|
@@ -2,26 +2,11 @@ require 'geo_ruby/simple_features/line_string'
|
|
2
2
|
|
3
3
|
module GeoRuby
|
4
4
|
module SimpleFeatures
|
5
|
-
#Represents a linear ring, which is a closed line string (see LineString).
|
5
|
+
#Represents a linear ring, which is a closed line string (see LineString). Currently, no check is performed to verify if the linear ring is really closed.
|
6
6
|
class LinearRing < LineString
|
7
7
|
def initialize(srid= DEFAULT_SRID,with_z=false,with_m=false)
|
8
8
|
super(srid,with_z,with_m)
|
9
9
|
end
|
10
|
-
|
11
|
-
#creates a new linear ring from an array of points. The first and last points should be equal, although no check is performed here.
|
12
|
-
def self.from_points(points,srid=DEFAULT_SRID,with_z=false,with_m=false)
|
13
|
-
linear_ring = LinearRing::new(srid,with_z,with_m)
|
14
|
-
linear_ring.concat(points)
|
15
|
-
linear_ring
|
16
|
-
end
|
17
|
-
|
18
|
-
#creates a new linear ring from a sequence of points : ((x,y)...(x,y)).
|
19
|
-
def self.from_coordinates(points,srid=DEFAULT_SRID,with_z=false,with_m=false)
|
20
|
-
linear_ring = LinearRing::new(srid,with_z,with_m)
|
21
|
-
linear_ring.concat( points.collect{|point_coords| Point.from_coordinates(point_coords,srid,with_z,with_m) } )
|
22
|
-
linear_ring
|
23
|
-
end
|
24
|
-
|
25
10
|
end
|
26
11
|
end
|
27
12
|
end
|
@@ -23,14 +23,14 @@ module GeoRuby
|
|
23
23
|
|
24
24
|
#Creates a new multi line string from an array of line strings
|
25
25
|
def self.from_line_strings(line_strings,srid=DEFAULT_SRID,with_z=false,with_m=false)
|
26
|
-
multi_line_string =
|
26
|
+
multi_line_string = new(srid,with_z,with_m)
|
27
27
|
multi_line_string.concat(line_strings)
|
28
28
|
multi_line_string
|
29
29
|
end
|
30
30
|
|
31
31
|
#Creates a new multi line string from sequences of points : (((x,y)...(x,y)),((x,y)...(x,y)))
|
32
32
|
def self.from_coordinates(point_sequences,srid=DEFAULT_SRID,with_z=false,with_m=false)
|
33
|
-
multi_line_string =
|
33
|
+
multi_line_string = new(srid,with_z,with_m)
|
34
34
|
multi_line_string.concat(point_sequences.collect {|points| LineString.from_coordinates(points,srid,with_z,with_m) })
|
35
35
|
multi_line_string
|
36
36
|
end
|
@@ -24,14 +24,14 @@ module GeoRuby
|
|
24
24
|
|
25
25
|
#Creates a new multi point from an array of points
|
26
26
|
def self.from_points(points,srid= DEFAULT_SRID,with_z=false,with_m=false)
|
27
|
-
multi_point=
|
27
|
+
multi_point= new(srid,with_z,with_m)
|
28
28
|
multi_point.concat(points)
|
29
29
|
multi_point
|
30
30
|
end
|
31
31
|
|
32
32
|
#Creates a new multi point from a list of point coordinates : ((x,y)...(x,y))
|
33
33
|
def self.from_coordinates(points,srid= DEFAULT_SRID,with_z=false,with_m=false)
|
34
|
-
multi_point=
|
34
|
+
multi_point= new(srid,with_z,with_m)
|
35
35
|
multi_point.concat(points.collect {|point| Point.from_coordinates(point,srid,with_z,with_m)})
|
36
36
|
multi_point
|
37
37
|
end
|
@@ -23,13 +23,13 @@ module GeoRuby
|
|
23
23
|
|
24
24
|
#Creates a multi polygon from an array of polygons
|
25
25
|
def self.from_polygons(polygons,srid=DEFAULT_SRID,with_z=false,with_m=false)
|
26
|
-
multi_polygon =
|
26
|
+
multi_polygon = new(srid,with_z,with_m)
|
27
27
|
multi_polygon.concat(polygons)
|
28
28
|
multi_polygon
|
29
29
|
end
|
30
30
|
#Creates a multi polygon from sequences of points : ((((x,y)...(x,y)),((x,y)...(x,y)),((x,y)...(x,y)))
|
31
31
|
def self.from_coordinates(point_sequence_sequences,srid= DEFAULT_SRID,with_z=false,with_m=false)
|
32
|
-
multi_polygon =
|
32
|
+
multi_polygon = new(srid,with_z,with_m)
|
33
33
|
multi_polygon.concat( point_sequence_sequences.collect {|point_sequences| Polygon.from_coordinates(point_sequences,srid,with_z,with_m) } )
|
34
34
|
multi_polygon
|
35
35
|
end
|
@@ -23,6 +23,7 @@ module GeoRuby
|
|
23
23
|
@x=x
|
24
24
|
@y=y
|
25
25
|
@z=z
|
26
|
+
self
|
26
27
|
end
|
27
28
|
alias :set_lon_lat_z :set_x_y_z
|
28
29
|
|
@@ -30,6 +31,7 @@ module GeoRuby
|
|
30
31
|
def set_x_y(x,y)
|
31
32
|
@x=x
|
32
33
|
@y=y
|
34
|
+
self
|
33
35
|
end
|
34
36
|
alias :set_lon_lat :set_x_y
|
35
37
|
|
@@ -193,33 +195,29 @@ module GeoRuby
|
|
193
195
|
|
194
196
|
#creates a point from the X and Y coordinates
|
195
197
|
def self.from_x_y(x,y,srid=DEFAULT_SRID)
|
196
|
-
point=
|
198
|
+
point= new(srid)
|
197
199
|
point.set_x_y(x,y)
|
198
|
-
point
|
199
200
|
end
|
200
201
|
|
201
202
|
#creates a point from the X, Y and Z coordinates
|
202
203
|
def self.from_x_y_z(x,y,z,srid=DEFAULT_SRID)
|
203
|
-
point=
|
204
|
+
point= new(srid,true)
|
204
205
|
point.set_x_y_z(x,y,z)
|
205
|
-
point
|
206
206
|
end
|
207
207
|
|
208
208
|
|
209
209
|
#creates a point from the X, Y and M coordinates
|
210
210
|
def self.from_x_y_m(x,y,m,srid=DEFAULT_SRID)
|
211
|
-
point=
|
212
|
-
point.set_x_y(x,y)
|
211
|
+
point= new(srid,false,true)
|
213
212
|
point.m=m
|
214
|
-
point
|
213
|
+
point.set_x_y(x,y)
|
215
214
|
end
|
216
215
|
|
217
216
|
#creates a point from the X, Y, Z and M coordinates
|
218
217
|
def self.from_x_y_z_m(x,y,z,m,srid=DEFAULT_SRID)
|
219
|
-
point=
|
220
|
-
point.set_x_y_z(x,y,z)
|
218
|
+
point= new(srid,true,true)
|
221
219
|
point.m=m
|
222
|
-
point
|
220
|
+
point.set_x_y_z(x,y,z)
|
223
221
|
end
|
224
222
|
|
225
223
|
#aliasing the constructors in case you want to use lat/lon instead of y/x
|
@@ -111,18 +111,26 @@ module GeoRuby
|
|
111
111
|
|
112
112
|
#creates a new polygon. Accepts an array of linear strings as argument
|
113
113
|
def self.from_linear_rings(linear_rings,srid = DEFAULT_SRID,with_z=false,with_m=false)
|
114
|
-
polygon =
|
114
|
+
polygon = new(srid,with_z,with_m)
|
115
115
|
polygon.concat(linear_rings)
|
116
116
|
polygon
|
117
117
|
end
|
118
118
|
|
119
119
|
#creates a new polygon. Accepts a sequence of points as argument : ((x,y)....(x,y)),((x,y).....(x,y))
|
120
120
|
def self.from_coordinates(point_sequences,srid=DEFAULT_SRID,with_z=false,with_m=false)
|
121
|
-
polygon =
|
121
|
+
polygon = new(srid,with_z,with_m)
|
122
122
|
polygon.concat( point_sequences.collect {|points| LinearRing.from_coordinates(points,srid,with_z,with_m) } )
|
123
123
|
polygon
|
124
124
|
end
|
125
125
|
|
126
|
+
#creates a new polygon from a list of Points (pt1....ptn),(pti....ptj)
|
127
|
+
def self.from_points(point_sequences, srid=DEFAULT_SRID,with_z=false,with_m=false)
|
128
|
+
polygon = new(srid,with_z,with_m)
|
129
|
+
polygon.concat( point_sequences.collect {|points| LinearRing.from_points(points,srid,with_z,with_m) } )
|
130
|
+
polygon
|
131
|
+
|
132
|
+
end
|
133
|
+
|
126
134
|
end
|
127
135
|
end
|
128
136
|
end
|
data/rakefile.rb
CHANGED
@@ -24,7 +24,7 @@ spec = Gem::Specification::new do |s|
|
|
24
24
|
s.platform = Gem::Platform::RUBY
|
25
25
|
|
26
26
|
s.name = 'GeoRuby'
|
27
|
-
s.version = "1.2.
|
27
|
+
s.version = "1.2.1"
|
28
28
|
s.summary = "Ruby data holder for OGC Simple Features"
|
29
29
|
s.description = <<EOF
|
30
30
|
GeoRuby is intended as a holder for data returned from PostGIS and MySQL Spatial queries. The data model roughly follows the OGC "Simple Features for SQL" specification (see www.opengis.org/docs/99-049.pdf), although without any kind of advanced functionalities (such as geometric operators or reprojections)
|
@@ -145,8 +145,12 @@ class TestSimpleFeatures < Test::Unit::TestCase
|
|
145
145
|
assert_in_delta(554058.924,point1.ellipsoidal_distance(point2),0.001)
|
146
146
|
|
147
147
|
assert_in_delta(555811.68,point1.spherical_distance(point2),0.01)
|
148
|
-
|
149
|
-
|
148
|
+
end
|
149
|
+
|
150
|
+
def point_subclassable
|
151
|
+
place = Class.new(Point)
|
152
|
+
p = place.from_x_y(0.0,0.0)
|
153
|
+
assert p.is_a?(place)
|
150
154
|
end
|
151
155
|
|
152
156
|
def test_line_string_creation
|
@@ -245,7 +249,15 @@ class TestSimpleFeatures < Test::Unit::TestCase
|
|
245
249
|
#no test of the binary representation for linear_rings : always with polygons and like line_string
|
246
250
|
def test_polygon_creation
|
247
251
|
linear_ring1 = LinearRing.from_coordinates([[12.4,-45.3],[45.4,41.6],[4.456,1.0698],[12.4,-45.3]],256)
|
248
|
-
linear_ring2 = LinearRing.from_coordinates([[2.4,5.3],[5.4,1.4263],[14.46,1.06],[2.4,5.3]],256)
|
252
|
+
linear_ring2 = LinearRing.from_coordinates([[2.4,5.3],[5.4,1.4263],[14.46,1.06],[2.4,5.3]],256)
|
253
|
+
point1 = Point.from_x_y(12.4,-45.3,256)
|
254
|
+
point2 = Point.from_x_y(45.4,41.6,256)
|
255
|
+
point3 = Point.from_x_y(4.456,1.0698,256)
|
256
|
+
point4 = Point.from_x_y(12.4,-45.3,256)
|
257
|
+
point5 = Point.from_x_y(2.4,5.3,256)
|
258
|
+
point6 = Point.from_x_y(5.4,1.4263,256)
|
259
|
+
point7 = Point.from_x_y(14.46,1.06,256)
|
260
|
+
point8 = Point.from_x_y(2.4,5.3,256)
|
249
261
|
|
250
262
|
polygon = Polygon::new(256)
|
251
263
|
assert_equal(0,polygon.length)
|
@@ -271,7 +283,11 @@ class TestSimpleFeatures < Test::Unit::TestCase
|
|
271
283
|
assert_equal(linear_ring1,polygon[0])
|
272
284
|
assert_equal(linear_ring2,polygon[1])
|
273
285
|
|
274
|
-
|
286
|
+
polygon = Polygon.from_points([[point1,point2,point3,point4],[point5,point6,point7,point8]],256)
|
287
|
+
assert_equal(2,polygon.length)
|
288
|
+
assert_equal(linear_ring1,polygon[0])
|
289
|
+
assert_equal(linear_ring2,polygon[1])
|
290
|
+
|
275
291
|
polygon = Polygon.from_coordinates([[[12.4,-45.3,15.2],[45.4,41.6,2.4],[4.456,1.0698,5.6],[12.4,-45.3,6.1]],[[2.4,5.3,4.5],[5.4,1.4263,4.2],[14.46,1.06,123.1],[2.4,5.3,4.4]]],256,true)
|
276
292
|
assert_equal(Polygon,polygon.class)
|
277
293
|
assert_equal(2,polygon.length)
|
@@ -286,6 +302,8 @@ class TestSimpleFeatures < Test::Unit::TestCase
|
|
286
302
|
assert_equal(2,bbox.length)
|
287
303
|
assert_equal(Point.from_x_y_z(4.456,-45.3,2.4),bbox[0])
|
288
304
|
assert_equal(Point.from_x_y_z(45.4,41.6,123.1),bbox[1])
|
305
|
+
|
306
|
+
|
289
307
|
|
290
308
|
end
|
291
309
|
def test_polygon_equal
|
data/tools/shp2sql.rb
CHANGED
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: GeoRuby
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.2.
|
7
|
-
date: 2007-
|
6
|
+
version: 1.2.1
|
7
|
+
date: 2007-02-20 00:00:00 +01:00
|
8
8
|
summary: Ruby data holder for OGC Simple Features
|
9
9
|
require_paths:
|
10
10
|
- lib
|