mongoid_geospatial 2.8.1 → 2.8.2
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.
- checksums.yaml +4 -4
- data/lib/mongoid_geospatial/geospatial.rb +2 -2
- data/lib/mongoid_geospatial/version.rb +1 -1
- data/lib/mongoid_geospatial/wrappers/georuby.rb +4 -2
- data/spec/models/river.rb +2 -1
- data/spec/mongoid_geospatial/extensions/core_ext_spec.rb +14 -2
- data/spec/mongoid_geospatial/fields/line_spec.rb +5 -5
- data/spec/mongoid_geospatial/fields/point_spec.rb +12 -0
- data/spec/mongoid_geospatial/wrappers/georuby_spec.rb +13 -0
- data/spec/mongoid_geospatial/wrappers/rgeo_spec.rb +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ac994cd87075d0e5e38f5bee7c1fa62d2d6bc0f
|
4
|
+
data.tar.gz: 444d017b5c507586baa79cca90878abc86dee177
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d654768a8e1099c1fd4675f5a390faead85e32718f395889f9fc973a298efef3a64faf41fa8a2336f27535de63d673e11dd477238decfd90cab5af25ca6109f
|
7
|
+
data.tar.gz: 9a2c7861e3f54530ebece165b7ec6b7ca2d93dc9b4c0db6200753fc6af01dc9c420ed6301791d391772ab5144d3ca3bc84e14749faa28c76a750109e47b2d91e
|
@@ -2,8 +2,8 @@ module Mongoid
|
|
2
2
|
module Geospatial
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
|
-
LNG_SYMBOLS = [:x, :lon, :long, :lng, :longitude]
|
6
|
-
LAT_SYMBOLS = [:y, :lat, :latitude]
|
5
|
+
LNG_SYMBOLS = [:x, :lon, :long, :lng, :longitude, 'x', 'lon', 'long', 'longitude']
|
6
|
+
LAT_SYMBOLS = [:y, :lat, :latitude, 'y', 'lat', 'latitude']
|
7
7
|
|
8
8
|
EARTH_RADIUS_KM = 6371 # taken directly from mongodb
|
9
9
|
RAD_PER_DEG = Math::PI / 180
|
@@ -28,15 +28,17 @@ module Mongoid
|
|
28
28
|
|
29
29
|
|
30
30
|
class Line < GeometryField
|
31
|
+
|
31
32
|
def to_geo
|
32
|
-
GeoRuby::SimpleFeatures::LineString.
|
33
|
+
GeoRuby::SimpleFeatures::LineString.from_coordinates([self])
|
33
34
|
end
|
34
35
|
|
35
36
|
end
|
36
37
|
|
37
38
|
class Polygon < GeometryField
|
39
|
+
|
38
40
|
def to_geo
|
39
|
-
GeoRuby::SimpleFeatures::Polygon.
|
41
|
+
GeoRuby::SimpleFeatures::Polygon.from_coordinates([self])
|
40
42
|
end
|
41
43
|
|
42
44
|
end
|
data/spec/models/river.rb
CHANGED
@@ -5,8 +5,9 @@ class River
|
|
5
5
|
field :name, type: String
|
6
6
|
field :length, type: Integer
|
7
7
|
field :average_discharge, type: Integer
|
8
|
-
field :
|
8
|
+
field :course, type: Line, spatial: true
|
9
9
|
# set return_array to true if you do not want a hash returned all the time
|
10
|
+
field :source, type: Point, spatial: true
|
10
11
|
field :mouth, type: Point, spatial: {lat: 'latitude', lng: 'longitude'}
|
11
12
|
field :mouth_array, type: Array, spatial: {return_array: true}
|
12
13
|
|
@@ -12,8 +12,20 @@ describe "Core Extensions" do
|
|
12
12
|
|
13
13
|
describe Hash do
|
14
14
|
|
15
|
-
it "
|
16
|
-
|
15
|
+
it "converts hash with symbol keys x,y to array with x,y" do
|
16
|
+
{ x: 1.1, y: 2.1 }.to_xy.should eql([1.1, 2.1])
|
17
|
+
end
|
18
|
+
|
19
|
+
it "converts hash with symbol keys y,x to array with x,y" do
|
20
|
+
{ y: 2.1, x: 1.1 }.to_xy.should eql([1.1, 2.1])
|
21
|
+
end
|
22
|
+
|
23
|
+
it "converts hash with string keys x,y to array with x,y" do
|
24
|
+
{ 'x' => 1.1, 'y' => 2.1 }.to_xy.should eql([1.1, 2.1])
|
25
|
+
end
|
26
|
+
|
27
|
+
it "converts hash with string keys y,x to array with x,y" do
|
28
|
+
{ 'y' => 2.1, 'x' => 1.1 }.to_xy.should eql([1.1, 2.1])
|
17
29
|
end
|
18
30
|
|
19
31
|
end
|
@@ -5,14 +5,14 @@ describe Mongoid::Geospatial::Line do
|
|
5
5
|
describe "(de)mongoize" do
|
6
6
|
|
7
7
|
it "should support a field mapped as linestring" do
|
8
|
-
river = River.new(
|
9
|
-
river.
|
10
|
-
river.
|
8
|
+
river = River.new(course: [[5,5],[6,5],[6,6],[5,6]])
|
9
|
+
river.course.should be_a Mongoid::Geospatial::Line
|
10
|
+
river.course.should eq([[5,5],[6,5],[6,6],[5,6]])
|
11
11
|
end
|
12
12
|
|
13
13
|
it "should support a field mapped as linestring" do
|
14
|
-
River.create!(
|
15
|
-
River.first.
|
14
|
+
River.create!(course: [[5,5],[6,5],[6,6],[5,6]])
|
15
|
+
River.first.course.should eq([[5,5],[6,5],[6,6],[5,6]])
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should have a bounding box" do
|
@@ -162,7 +162,19 @@ describe Mongoid::Geospatial::Point do
|
|
162
162
|
geom.y.should be_within(0.1).of(-9)
|
163
163
|
end
|
164
164
|
|
165
|
+
it "should mongoize hash with symbols in any order" do
|
166
|
+
geom = Bar.new(location: {y: -9, x: 10}).location
|
167
|
+
geom.class.should eql(Mongoid::Geospatial::Point)
|
168
|
+
geom.x.should be_within(0.1).of(10)
|
169
|
+
geom.y.should be_within(0.1).of(-9)
|
170
|
+
end
|
165
171
|
|
172
|
+
it "should mongoize hash with string keys in any order" do
|
173
|
+
geom = Bar.new(location: {'y' => -9, 'x' => 10}).location
|
174
|
+
geom.class.should eql(Mongoid::Geospatial::Point)
|
175
|
+
geom.x.should be_within(0.1).of(10)
|
176
|
+
geom.y.should be_within(0.1).of(-9)
|
177
|
+
end
|
166
178
|
|
167
179
|
# should raise
|
168
180
|
# geom.to_geo
|
@@ -57,6 +57,19 @@ describe Mongoid::Geospatial::Point do
|
|
57
57
|
bar.location.distance(bar2.location).to_i.should be_within(1).of(3973808)
|
58
58
|
end
|
59
59
|
|
60
|
+
describe "simple features" do
|
61
|
+
|
62
|
+
it "should mongoize lines" do
|
63
|
+
river = River.new(course: [[1,2],[3,4],[5,6]])
|
64
|
+
river.course.to_geo.should be_instance_of(GeoRuby::SimpleFeatures::LineString)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should mongoize polygon" do
|
68
|
+
farm = Farm.new(area: [[1,2],[3,4],[5,6]])
|
69
|
+
farm.area.to_geo.should be_instance_of(GeoRuby::SimpleFeatures::Polygon)
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
60
73
|
end
|
61
74
|
end
|
62
75
|
end
|
@@ -52,8 +52,8 @@ describe "RGeo Wrapper" do
|
|
52
52
|
end
|
53
53
|
|
54
54
|
it "should not respond to to_geo before loading external" do
|
55
|
-
river = River.create!(
|
56
|
-
river.
|
55
|
+
river = River.create!(course: [[5,5],[6,5],[6,6],[5,6]])
|
56
|
+
river.course.should_not respond_to(:to_geo)
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
@@ -108,7 +108,7 @@ describe "RGeo Wrapper" do
|
|
108
108
|
|
109
109
|
describe Mongoid::Geospatial::Line do
|
110
110
|
it "should mongoize array" do
|
111
|
-
geom = River.create!(
|
111
|
+
geom = River.create!(course: [[5,5],[6,5],[6,6],[5,6]]).course
|
112
112
|
geom.class.should eql(Mongoid::Geospatial::Line)
|
113
113
|
geom.to_geo.class.should eql(RGeo::Geographic::SphericalLineStringImpl)
|
114
114
|
geom.to_geo.to_s.should eq "LINESTRING (5.0 5.0, 6.0 5.0, 6.0 6.0, 5.0 6.0)"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid_geospatial
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.8.
|
4
|
+
version: 2.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Ong
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|