nofxx-georuby 1.9.0 → 1.9.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +8 -0
- data/Gemfile.lock +29 -0
- data/Rakefile +0 -1
- data/VERSION +1 -1
- data/lib/geo_ruby.rb +5 -5
- data/lib/geo_ruby/geojson.rb +129 -0
- data/lib/geo_ruby/georss.rb +133 -0
- data/lib/geo_ruby/simple_features/ewkb_parser.rb +43 -40
- data/spec/data/georss/atom.xml +21 -0
- data/spec/data/georss/gml.xml +40 -0
- data/spec/data/georss/w3c.xml +22 -0
- data/spec/geo_ruby/{simple_features/geojson_parser_spec.rb → geojson_spec.rb} +7 -7
- data/spec/geo_ruby/{simple_features/georss_parser_spec.rb → georss.rb} +0 -0
- data/spec/geo_ruby/georss_spec.rb +14 -0
- data/spec/spec_helper.rb +3 -1
- metadata +59 -44
- data/lib/geo_ruby/simple_features/geojson_parser.rb +0 -132
- data/lib/geo_ruby/simple_features/georss_parser.rb +0 -135
- data/marcusmateus-georuby.gemspec +0 -136
- data/script/console +0 -10
- data/script/destroy +0 -14
- data/script/generate +0 -14
- data/script/txt2html +0 -82
@@ -0,0 +1,21 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<feed xmlns="http://www.w3.org/2005/Atom"
|
3
|
+
xmlns:georss="http://www.georss.org/georss">
|
4
|
+
<title>Earthquakes</title>
|
5
|
+
<subtitle>International earthquake observation labs</subtitle>
|
6
|
+
<link href="http://example.org/"/>
|
7
|
+
<updated>2005-12-13T18:30:02Z</updated>
|
8
|
+
<author>
|
9
|
+
<name>Dr. Thaddeus Remor</name>
|
10
|
+
<email>tremor@quakelab.edu</email>
|
11
|
+
</author>
|
12
|
+
<id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
|
13
|
+
<entry>
|
14
|
+
<title>M 3.2, Mona Passage</title>
|
15
|
+
<link href="http://example.org/2005/09/09/atom01"/>
|
16
|
+
<id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
|
17
|
+
<updated>2005-08-17T07:02:32Z</updated>
|
18
|
+
<summary>We just had a big one.</summary>
|
19
|
+
<georss:point>45.256 -71.92</georss:point>
|
20
|
+
</entry>
|
21
|
+
</feed>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<rss version="2.0"
|
3
|
+
xmlns:georss="http://www.georss.org/georss"
|
4
|
+
xmlns:gml="http://www.opengis.net/gml">
|
5
|
+
<channel>
|
6
|
+
<link>http://maps.google.com</link>
|
7
|
+
<title>Cambridge Neighborhoods</title>
|
8
|
+
<description>One guy's view of Cambridge, MA</description>
|
9
|
+
<item>
|
10
|
+
<guid isPermaLink="false">00000111c36421c1321d3</guid>
|
11
|
+
<pubDate>Thu, 05 Apr 2007 20:16:31 +0000</pubDate>
|
12
|
+
<title>Central Square</title>
|
13
|
+
<description>The heart and soul of the "old" Cambridge. Depending on where you
|
14
|
+
stand, you can feel like you're in the 1970s or 2020.</description>
|
15
|
+
<author>rajrsingh</author>
|
16
|
+
<gml:Polygon>
|
17
|
+
<gml:exterior>
|
18
|
+
<gml:LinearRing>
|
19
|
+
<gml:posList>
|
20
|
+
-71.106216 42.366661
|
21
|
+
-71.105576 42.367104
|
22
|
+
-71.104378 42.367134
|
23
|
+
-71.103729 42.366249
|
24
|
+
-71.098793 42.363331
|
25
|
+
-71.101028 42.362541
|
26
|
+
-71.106865 42.366123
|
27
|
+
-71.106216 42.366661
|
28
|
+
</gml:posList>
|
29
|
+
</gml:LinearRing>
|
30
|
+
</gml:exterior>
|
31
|
+
</gml:Polygon>
|
32
|
+
</item>
|
33
|
+
<item>
|
34
|
+
<guid isPermaLink="false">00000111c365564928974</guid>
|
35
|
+
<pubDate>Thu, 05 Apr 2007 20:17:50 +0000</pubDate>
|
36
|
+
<title>MIT</title>
|
37
|
+
<description>Massachusetts Institute of Technology</description>
|
38
|
+
<author>rajrsingh</author>
|
39
|
+
<gml:Polygon>
|
40
|
+
<Snip and end fragment>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<?xml-stylesheet href="/eqcenter/catalogs/rssxsl.php?feed=eqs7day-M5.xml" type="text/xsl"
|
3
|
+
media="screen"?>
|
4
|
+
<rss version="2.0"
|
5
|
+
xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
|
6
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
7
|
+
<channel>
|
8
|
+
<title>USGS M5+ Earthquakes</title>
|
9
|
+
<description>Real-time, worldwide earthquake list for the past 7 days</description>
|
10
|
+
<link>http://earthquake.usgs.gov/eqcenter/</link>
|
11
|
+
<dc:publisher>U.S. Geological Survey</dc:publisher>
|
12
|
+
<pubDate>Thu, 27 Dec 2007 23:56:15 PST</pubDate>
|
13
|
+
<item>
|
14
|
+
<pubDate>Fri, 28 Dec 2007 05:24:17 GMT</pubDate>
|
15
|
+
<title>M 5.3, northern Sumatra, Indonesia</title>
|
16
|
+
<description>December 28, 2007 05:24:17 GMT</description>
|
17
|
+
<link>http://earthquake.usgs.gov/eqcenter/recenteqsww/Quakes/us2007llai.php</link>
|
18
|
+
<geo:lat>5.5319</geo:lat>
|
19
|
+
<geo:long>95.8972</geo:long>
|
20
|
+
</item>
|
21
|
+
</channel>
|
22
|
+
</rss>
|
@@ -1,6 +1,6 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
2
|
|
3
|
-
DATA_DIR = File.dirname(__FILE__) + '
|
3
|
+
DATA_DIR = File.dirname(__FILE__) + '/../data/geojson/'
|
4
4
|
|
5
5
|
# All geojson test examples are from the GeoJSON spec unless otherwise
|
6
6
|
# specified
|
@@ -111,13 +111,13 @@ describe GeojsonParser do
|
|
111
111
|
it "should create a specified Feature" do
|
112
112
|
feature_json = <<-EOJ
|
113
113
|
{
|
114
|
-
"type":"Feature",
|
115
|
-
"id":"OpenLayers.Feature.Vector_314",
|
116
|
-
"properties":{"prop0": "value0"},
|
114
|
+
"type":"Feature",
|
115
|
+
"id":"OpenLayers.Feature.Vector_314",
|
116
|
+
"properties":{"prop0": "value0"},
|
117
117
|
"geometry":{
|
118
|
-
"type":"Point",
|
118
|
+
"type":"Point",
|
119
119
|
"coordinates":[97.03125, 39.7265625]
|
120
|
-
}
|
120
|
+
}
|
121
121
|
}
|
122
122
|
EOJ
|
123
123
|
f = Geometry.from_geojson(feature_json)
|
File without changes
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
RSS_DATA_DIR = File.dirname(__FILE__) + '/../data/georss/'
|
4
|
+
|
5
|
+
describe GeorssParser do
|
6
|
+
|
7
|
+
it "should parse an rss file" do
|
8
|
+
geo = GeorssParser.new.parse(File.read(RSS_DATA_DIR + "/w3c.xml"))
|
9
|
+
geo.should be_a Point
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -9,13 +9,15 @@ require 'rubygems'
|
|
9
9
|
# begin
|
10
10
|
# require 'spec'
|
11
11
|
# rescue LoadError
|
12
|
-
|
12
|
+
require 'rspec'
|
13
13
|
#end
|
14
14
|
|
15
15
|
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
16
16
|
require 'geo_ruby'
|
17
17
|
require 'geo_ruby/shp'
|
18
18
|
require 'geo_ruby/gpx'
|
19
|
+
require 'geo_ruby/geojson'
|
20
|
+
require 'geo_ruby/georss'
|
19
21
|
|
20
22
|
include GeoRuby
|
21
23
|
include SimpleFeatures
|
metadata
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nofxx-georuby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 1
|
7
|
-
- 9
|
8
|
-
- 0
|
9
|
-
version: 1.9.0
|
4
|
+
prerelease:
|
5
|
+
version: 1.9.1
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
8
|
- Guilhem Vellut
|
@@ -17,54 +13,75 @@ autorequire:
|
|
17
13
|
bindir: bin
|
18
14
|
cert_chain: []
|
19
15
|
|
20
|
-
date: 2011-
|
16
|
+
date: 2011-03-18 00:00:00 -03:00
|
21
17
|
default_executable:
|
22
18
|
dependencies:
|
23
19
|
- !ruby/object:Gem::Dependency
|
24
|
-
name:
|
25
|
-
prerelease: false
|
20
|
+
name: dbf
|
26
21
|
requirement: &id001 !ruby/object:Gem::Requirement
|
27
22
|
none: false
|
28
23
|
requirements:
|
29
24
|
- - ">="
|
30
25
|
- !ruby/object:Gem::Version
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
- 6
|
35
|
-
version: 1.4.6
|
36
|
-
type: :runtime
|
26
|
+
version: 1.5.0
|
27
|
+
type: :development
|
28
|
+
prerelease: false
|
37
29
|
version_requirements: *id001
|
38
30
|
- !ruby/object:Gem::Dependency
|
39
31
|
name: rspec
|
40
|
-
prerelease: false
|
41
32
|
requirement: &id002 !ruby/object:Gem::Requirement
|
42
33
|
none: false
|
43
34
|
requirements:
|
44
35
|
- - ">="
|
45
36
|
- !ruby/object:Gem::Version
|
46
|
-
|
47
|
-
- 2
|
48
|
-
- 0
|
49
|
-
- 0
|
50
|
-
version: 2.0.0
|
37
|
+
version: 2.3.0
|
51
38
|
type: :development
|
39
|
+
prerelease: false
|
52
40
|
version_requirements: *id002
|
53
41
|
- !ruby/object:Gem::Dependency
|
54
|
-
name:
|
55
|
-
prerelease: false
|
42
|
+
name: bundler
|
56
43
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
44
|
none: false
|
58
45
|
requirements:
|
59
46
|
- - ">="
|
60
47
|
- !ruby/object:Gem::Version
|
61
|
-
|
62
|
-
- 1
|
63
|
-
- 2
|
64
|
-
- 9
|
65
|
-
version: 1.2.9
|
48
|
+
version: 1.0.0
|
66
49
|
type: :development
|
50
|
+
prerelease: false
|
67
51
|
version_requirements: *id003
|
52
|
+
- !ruby/object:Gem::Dependency
|
53
|
+
name: rcov
|
54
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: "0"
|
60
|
+
type: :development
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: *id004
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: rspec
|
65
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 2.0.0
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: *id005
|
74
|
+
- !ruby/object:Gem::Dependency
|
75
|
+
name: dbf
|
76
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
77
|
+
none: false
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: 1.2.9
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: *id006
|
68
85
|
description: GeoRuby provides geometric data types from the OGC 'Simple Features' specification.
|
69
86
|
email: georuby@simplitex.com
|
70
87
|
executables: []
|
@@ -75,12 +92,16 @@ extra_rdoc_files:
|
|
75
92
|
- LICENSE
|
76
93
|
- README.rdoc
|
77
94
|
files:
|
95
|
+
- Gemfile
|
96
|
+
- Gemfile.lock
|
78
97
|
- History.txt
|
79
98
|
- LICENSE
|
80
99
|
- README.rdoc
|
81
100
|
- Rakefile
|
82
101
|
- VERSION
|
83
102
|
- lib/geo_ruby.rb
|
103
|
+
- lib/geo_ruby/geojson.rb
|
104
|
+
- lib/geo_ruby/georss.rb
|
84
105
|
- lib/geo_ruby/gpx.rb
|
85
106
|
- lib/geo_ruby/gpx4r/gpx.rb
|
86
107
|
- lib/geo_ruby/shp.rb
|
@@ -89,11 +110,9 @@ files:
|
|
89
110
|
- lib/geo_ruby/simple_features/envelope.rb
|
90
111
|
- lib/geo_ruby/simple_features/ewkb_parser.rb
|
91
112
|
- lib/geo_ruby/simple_features/ewkt_parser.rb
|
92
|
-
- lib/geo_ruby/simple_features/geojson_parser.rb
|
93
113
|
- lib/geo_ruby/simple_features/geometry.rb
|
94
114
|
- lib/geo_ruby/simple_features/geometry_collection.rb
|
95
115
|
- lib/geo_ruby/simple_features/geometry_factory.rb
|
96
|
-
- lib/geo_ruby/simple_features/georss_parser.rb
|
97
116
|
- lib/geo_ruby/simple_features/helper.rb
|
98
117
|
- lib/geo_ruby/simple_features/line_string.rb
|
99
118
|
- lib/geo_ruby/simple_features/linear_ring.rb
|
@@ -102,12 +121,10 @@ files:
|
|
102
121
|
- lib/geo_ruby/simple_features/multi_polygon.rb
|
103
122
|
- lib/geo_ruby/simple_features/point.rb
|
104
123
|
- lib/geo_ruby/simple_features/polygon.rb
|
105
|
-
- marcusmateus-georuby.gemspec
|
106
|
-
- script/console
|
107
|
-
- script/destroy
|
108
|
-
- script/generate
|
109
|
-
- script/txt2html
|
110
124
|
- spec/data/geojson/feature_collection.json
|
125
|
+
- spec/data/georss/atom.xml
|
126
|
+
- spec/data/georss/gml.xml
|
127
|
+
- spec/data/georss/w3c.xml
|
111
128
|
- spec/data/gpx/fells_loop.gpx
|
112
129
|
- spec/data/gpx/long.gpx
|
113
130
|
- spec/data/gpx/long.kml
|
@@ -127,16 +144,17 @@ files:
|
|
127
144
|
- spec/data/polyline.dbf
|
128
145
|
- spec/data/polyline.shp
|
129
146
|
- spec/data/polyline.shx
|
147
|
+
- spec/geo_ruby/geojson_spec.rb
|
148
|
+
- spec/geo_ruby/georss.rb
|
149
|
+
- spec/geo_ruby/georss_spec.rb
|
130
150
|
- spec/geo_ruby/gpx4r/gpx_spec.rb
|
131
151
|
- spec/geo_ruby/shp4r/shp_spec.rb
|
132
152
|
- spec/geo_ruby/simple_features/envelope_spec.rb
|
133
153
|
- spec/geo_ruby/simple_features/ewkb_parser_spec.rb
|
134
154
|
- spec/geo_ruby/simple_features/ewkt_parser_spec.rb
|
135
|
-
- spec/geo_ruby/simple_features/geojson_parser_spec.rb
|
136
155
|
- spec/geo_ruby/simple_features/geometry_collection_spec.rb
|
137
156
|
- spec/geo_ruby/simple_features/geometry_factory_spec.rb
|
138
157
|
- spec/geo_ruby/simple_features/geometry_spec.rb
|
139
|
-
- spec/geo_ruby/simple_features/georss_parser_spec.rb
|
140
158
|
- spec/geo_ruby/simple_features/line_string_spec.rb
|
141
159
|
- spec/geo_ruby/simple_features/linear_ring_spec.rb
|
142
160
|
- spec/geo_ruby/simple_features/multi_line_string_spec.rb
|
@@ -160,35 +178,32 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
160
178
|
requirements:
|
161
179
|
- - ">="
|
162
180
|
- !ruby/object:Gem::Version
|
163
|
-
segments:
|
164
|
-
- 0
|
165
181
|
version: "0"
|
166
182
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
167
183
|
none: false
|
168
184
|
requirements:
|
169
185
|
- - ">="
|
170
186
|
- !ruby/object:Gem::Version
|
171
|
-
segments:
|
172
|
-
- 0
|
173
187
|
version: "0"
|
174
188
|
requirements: []
|
175
189
|
|
176
190
|
rubyforge_project:
|
177
|
-
rubygems_version: 1.
|
191
|
+
rubygems_version: 1.5.2
|
178
192
|
signing_key:
|
179
193
|
specification_version: 3
|
180
194
|
summary: Ruby data holder for OGC Simple Features
|
181
195
|
test_files:
|
196
|
+
- spec/geo_ruby/geojson_spec.rb
|
197
|
+
- spec/geo_ruby/georss.rb
|
198
|
+
- spec/geo_ruby/georss_spec.rb
|
182
199
|
- spec/geo_ruby/gpx4r/gpx_spec.rb
|
183
200
|
- spec/geo_ruby/shp4r/shp_spec.rb
|
184
201
|
- spec/geo_ruby/simple_features/envelope_spec.rb
|
185
202
|
- spec/geo_ruby/simple_features/ewkb_parser_spec.rb
|
186
203
|
- spec/geo_ruby/simple_features/ewkt_parser_spec.rb
|
187
|
-
- spec/geo_ruby/simple_features/geojson_parser_spec.rb
|
188
204
|
- spec/geo_ruby/simple_features/geometry_collection_spec.rb
|
189
205
|
- spec/geo_ruby/simple_features/geometry_factory_spec.rb
|
190
206
|
- spec/geo_ruby/simple_features/geometry_spec.rb
|
191
|
-
- spec/geo_ruby/simple_features/georss_parser_spec.rb
|
192
207
|
- spec/geo_ruby/simple_features/line_string_spec.rb
|
193
208
|
- spec/geo_ruby/simple_features/linear_ring_spec.rb
|
194
209
|
- spec/geo_ruby/simple_features/multi_line_string_spec.rb
|
@@ -1,132 +0,0 @@
|
|
1
|
-
# GeoJSON parser based on the v1.0 spec at http://geojson.org/geojson-spec.html
|
2
|
-
require 'json/pure'
|
3
|
-
|
4
|
-
module GeoRuby
|
5
|
-
module SimpleFeatures
|
6
|
-
#Raised when an error in the GeoJSON string is detected
|
7
|
-
class GeojsonFormatError < StandardError
|
8
|
-
end
|
9
|
-
|
10
|
-
# Class added to support geojson 'Feature' objects
|
11
|
-
class GeojsonFeature
|
12
|
-
attr_accessor :geometry, :properties, :id
|
13
|
-
|
14
|
-
def initialize(geometry, properties = {}, id = nil)
|
15
|
-
@geometry = geometry
|
16
|
-
@properties = properties
|
17
|
-
@id = id
|
18
|
-
end
|
19
|
-
|
20
|
-
def ==(other)
|
21
|
-
if (self.class != other.class)
|
22
|
-
false
|
23
|
-
else
|
24
|
-
(self.id == other.id) && (self.geometry == other.geometry) && (self.properties == other.properties)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def to_json(options={})
|
29
|
-
output = {}
|
30
|
-
output[:type] = 'Feature'
|
31
|
-
output[:geometry] = geometry
|
32
|
-
output[:properties] = properties
|
33
|
-
output[:id] = id unless id.nil?
|
34
|
-
output.to_json(options)
|
35
|
-
end
|
36
|
-
alias :as_geojson :to_json
|
37
|
-
end
|
38
|
-
|
39
|
-
# Class added to support geojson 'Feature Collection' objects
|
40
|
-
class GeojsonFeatureCollection
|
41
|
-
attr_accessor :features
|
42
|
-
|
43
|
-
def initialize(features)
|
44
|
-
@features = features
|
45
|
-
end
|
46
|
-
|
47
|
-
def ==(other)
|
48
|
-
if (self.class != other.class) || (features.size != other.features.size)
|
49
|
-
return false
|
50
|
-
else
|
51
|
-
features.each_index do |index|
|
52
|
-
return false if self.features[index] != other.features[index]
|
53
|
-
end
|
54
|
-
end
|
55
|
-
true
|
56
|
-
end
|
57
|
-
|
58
|
-
def to_json(options = {})
|
59
|
-
{:type => 'FeatureCollection',
|
60
|
-
:features => features}.to_json(options)
|
61
|
-
end
|
62
|
-
alias :as_geojson :to_json
|
63
|
-
end
|
64
|
-
|
65
|
-
|
66
|
-
class GeojsonParser
|
67
|
-
attr_reader :geometry
|
68
|
-
|
69
|
-
def parse(geojson, srid=DEFAULT_SRID)
|
70
|
-
@geometry = nil
|
71
|
-
geohash = JSON.parse(geojson)
|
72
|
-
parse_geohash(geohash, srid)
|
73
|
-
end
|
74
|
-
|
75
|
-
private
|
76
|
-
|
77
|
-
def parse_geohash(geohash, srid)
|
78
|
-
srid = srid_from_crs(geohash['crs']) || srid
|
79
|
-
case geohash['type']
|
80
|
-
when 'Point', 'MultiPoint', 'LineString', 'MultiLineString', 'Polygon', 'MultiPolygon', 'GeometryCollection'
|
81
|
-
@geometry = parse_geometry(geohash, srid)
|
82
|
-
when 'Feature'
|
83
|
-
@geometry = parse_geojson_feature(geohash, srid)
|
84
|
-
when 'FeatureCollection'
|
85
|
-
@geometry = parse_geojson_feature_collection(geohash, srid)
|
86
|
-
else
|
87
|
-
GeojsonFormatError.new('Unknown GeoJSON type')
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
def parse_geometry(geohash, srid)
|
92
|
-
srid = srid_from_crs(geohash['crs']) || srid
|
93
|
-
if geohash['type'] == 'GeometryCollection'
|
94
|
-
parse_geometry_collection(geohash, srid)
|
95
|
-
else
|
96
|
-
klass = GeoRuby::SimpleFeatures.const_get(geohash['type'])
|
97
|
-
klass.from_coordinates(geohash['coordinates'], srid, false, false)
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
def parse_geometry_collection(geohash, srid)
|
102
|
-
srid = srid_from_crs(geohash['crs']) || srid
|
103
|
-
geometries = geohash['geometries'].map{|g| parse_geometry(g,srid)}
|
104
|
-
GeometryCollection.from_geometries(geometries,srid)
|
105
|
-
end
|
106
|
-
|
107
|
-
def parse_geojson_feature(geohash, srid)
|
108
|
-
srid = srid_from_crs(geohash['crs']) || srid
|
109
|
-
geometry = parse_geometry(geohash['geometry'],srid)
|
110
|
-
GeojsonFeature.new(geometry, geohash['properties'], geohash['id'])
|
111
|
-
end
|
112
|
-
|
113
|
-
def parse_geojson_feature_collection(geohash, srid)
|
114
|
-
srid = srid_from_crs(geohash['crs']) || srid
|
115
|
-
features = []
|
116
|
-
geohash['features'].each do |feature|
|
117
|
-
features << parse_geojson_feature(feature, srid)
|
118
|
-
end
|
119
|
-
GeojsonFeatureCollection.new(features)
|
120
|
-
end
|
121
|
-
|
122
|
-
def srid_from_crs(crs)
|
123
|
-
# We somehow need to map crs to srid, currently only support for EPSG
|
124
|
-
if crs && crs['type'] == 'OGC'
|
125
|
-
urn = crs['properties']['urn'].split(':')
|
126
|
-
return urn.last if urn[4] == 'EPSG'
|
127
|
-
end
|
128
|
-
return nil
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|