geomagic 0.0.1.alpha → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,4 @@
1
1
  module Extensions
2
2
  require "geomagic/extensions/geo_ruby_ext/point_in_polygon"
3
+ require "geomagic/extensions/geo_ruby_ext/utility"
3
4
  end
@@ -0,0 +1,22 @@
1
+ module Geomagic
2
+ module Extensions
3
+ module GeoRubyExt
4
+ module Utility
5
+ class GeoRuby::SimpleFeatures::Polygon
6
+ def to_coordinates
7
+ _points = []
8
+ self.rings.each do |points|
9
+ points.each do |point|
10
+ _points << [point.lat, point.lng]
11
+ end
12
+ end
13
+ _points
14
+ end
15
+
16
+
17
+
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,3 @@
1
1
  module Geomagic
2
- VERSION = "0.0.1.alpha"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+ require 'geo_ruby'
3
+
4
+ describe "Utility" do
5
+ describe "polygon method" do
6
+ it "retrives coordinates" do
7
+ polygon = GeoRuby::SimpleFeatures::Polygon.from_coordinates([[[25.774252, -80.190262], [18.466465, -66.118292],[32.321384, -64.75737],[25.774252, -80.190262]]])
8
+ polygon.to_coordinates.should == [[-80.190262, 25.774252], [-66.118292, 18.466465], [-64.75737, 32.321384], [-80.190262, 25.774252]]
9
+ end
10
+
11
+
12
+ end
13
+ end
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geomagic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.alpha
5
- prerelease: 6
4
+ version: 0.0.2
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Arturs Braucs
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-03-14 00:00:00.000000000 Z
14
+ date: 2012-03-16 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rspec
18
- requirement: &81869790 !ruby/object:Gem::Requirement
18
+ requirement: &2156606640 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: '0'
24
24
  type: :development
25
25
  prerelease: false
26
- version_requirements: *81869790
26
+ version_requirements: *2156606640
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: geokit-rails3
29
- requirement: &81869300 !ruby/object:Gem::Requirement
29
+ requirement: &2156605180 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: '0'
35
35
  type: :runtime
36
36
  prerelease: false
37
- version_requirements: *81869300
37
+ version_requirements: *2156605180
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: geocoder
40
- requirement: &81868550 !ruby/object:Gem::Requirement
40
+ requirement: &2156604080 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: '0'
46
46
  type: :runtime
47
47
  prerelease: false
48
- version_requirements: *81868550
48
+ version_requirements: *2156604080
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: GeoRuby
51
- requirement: &81868160 !ruby/object:Gem::Requirement
51
+ requirement: &2156602760 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ! '>='
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: '0'
57
57
  type: :runtime
58
58
  prerelease: false
59
- version_requirements: *81868160
59
+ version_requirements: *2156602760
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: activesupport
62
- requirement: &81863730 !ruby/object:Gem::Requirement
62
+ requirement: &2156601240 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ~>
@@ -67,10 +67,10 @@ dependencies:
67
67
  version: 3.2.2
68
68
  type: :runtime
69
69
  prerelease: false
70
- version_requirements: *81863730
70
+ version_requirements: *2156601240
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: rails
73
- requirement: &81862930 !ruby/object:Gem::Requirement
73
+ requirement: &2156599780 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ~>
@@ -78,7 +78,7 @@ dependencies:
78
78
  version: 3.2.2
79
79
  type: :runtime
80
80
  prerelease: false
81
- version_requirements: *81862930
81
+ version_requirements: *2156599780
82
82
  description: Plugin for working with Geo locations in serverside.
83
83
  email:
84
84
  - arturs@creo.mobi
@@ -100,9 +100,10 @@ files:
100
100
  - lib/geomagic/engine.rb
101
101
  - lib/geomagic/extensions.rb
102
102
  - lib/geomagic/extensions/geo_ruby_ext/point_in_polygon.rb
103
- - lib/geomagic/point_in_polygon.rb
103
+ - lib/geomagic/extensions/geo_ruby_ext/utility.rb
104
104
  - lib/geomagic/version.rb
105
105
  - spec/geomagic/point_in_polygon_spec.rb
106
+ - spec/geomagic/utility_spec.rb
106
107
  - spec/geomagic_spec.rb
107
108
  - spec/spec_helper.rb
108
109
  homepage: https://github.com/CreativeMobile/geomagic
@@ -120,13 +121,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
120
121
  required_rubygems_version: !ruby/object:Gem::Requirement
121
122
  none: false
122
123
  requirements:
123
- - - ! '>'
124
+ - - ! '>='
124
125
  - !ruby/object:Gem::Version
125
- version: 1.3.1
126
+ version: '0'
126
127
  requirements: []
127
128
  rubyforge_project:
128
- rubygems_version: 1.8.15
129
+ rubygems_version: 1.8.17
129
130
  signing_key:
130
131
  specification_version: 3
131
132
  summary: Plugin for working with Geo locations in serverside.
132
- test_files: []
133
+ test_files:
134
+ - spec/geomagic/point_in_polygon_spec.rb
135
+ - spec/geomagic/utility_spec.rb
136
+ - spec/geomagic_spec.rb
137
+ - spec/spec_helper.rb
@@ -1,57 +0,0 @@
1
- module Geomagic
2
- module PointInPolygon
3
- class GeoRuby::SimpleFeatures::Polygon
4
-
5
- def includes? point
6
- self.each do |linear_ring|
7
- return true if linear_ring.contains_point? point
8
- end
9
- false
10
- end
11
-
12
- end
13
-
14
- class GeoRuby::SimpleFeatures::LinearRing
15
-
16
- def contains_point? point
17
- return false if outside_bounding_box? point
18
- i = -1
19
- j = self.size-1
20
- contains_point = false
21
- while (i += 1) < self.size
22
- a_point_on_polygon = self[i]
23
- trailing_point_on_polygon = self[j]
24
- if point_is_between_the_ys_of_the_line_segment?(point, a_point_on_polygon, trailing_point_on_polygon)
25
- if ray_crosses_through_line_segment?(point, a_point_on_polygon, trailing_point_on_polygon)
26
- contains_point = !contains_point
27
- end
28
- end
29
- j = i
30
- end
31
- contains_point
32
- end
33
-
34
- private
35
-
36
- def point_is_between_the_ys_of_the_line_segment?(point, a_point_on_polygon, trailing_point_on_polygon)
37
- (a_point_on_polygon.lat <= point.lat && point.lat < trailing_point_on_polygon.lat) ||
38
- (trailing_point_on_polygon.lat <= point.lat && point.lat < a_point_on_polygon.lat)
39
- end
40
-
41
- def ray_crosses_through_line_segment?(point, a_point_on_polygon, trailing_point_on_polygon)
42
- (point.lng < (trailing_point_on_polygon.lng - a_point_on_polygon.lng) * (point.lat - a_point_on_polygon.lat) /
43
- (trailing_point_on_polygon.lat - a_point_on_polygon.lat) + a_point_on_polygon.lng)
44
- end
45
-
46
- def outside_bounding_box? point
47
- bb_point_1, bb_point_2 = bounding_box
48
- max_x = [bb_point_1.lng, bb_point_2.lng].max
49
- max_y = [bb_point_1.lat, bb_point_2.lat].max
50
- min_x = [bb_point_1.lng, bb_point_2.lng].min
51
- min_y = [bb_point_1.lat, bb_point_2.lat].min
52
-
53
- point.lng < min_x || point.lng > max_x || point.lat < min_y || point.lat > max_y
54
- end
55
- end
56
- end
57
- end