geocoder 1.6.6 → 1.7.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/CHANGELOG.md +22 -2
- data/README.md +318 -206
- data/lib/generators/geocoder/config/templates/initializer.rb +7 -1
- data/lib/geocoder/cache.rb +12 -33
- data/lib/geocoder/cache_stores/base.rb +40 -0
- data/lib/geocoder/cache_stores/generic.rb +35 -0
- data/lib/geocoder/cache_stores/redis.rb +34 -0
- data/lib/geocoder/configuration.rb +7 -2
- data/lib/geocoder/ip_address.rb +6 -0
- data/lib/geocoder/lookup.rb +16 -2
- data/lib/geocoder/lookups/abstract_api.rb +46 -0
- data/lib/geocoder/lookups/amazon_location_service.rb +54 -0
- data/lib/geocoder/lookups/base.rb +8 -2
- data/lib/geocoder/lookups/bing.rb +1 -1
- data/lib/geocoder/lookups/geoapify.rb +72 -0
- data/lib/geocoder/lookups/geoip2.rb +4 -0
- data/lib/geocoder/lookups/ip2location.rb +10 -6
- data/lib/geocoder/lookups/ipdata_co.rb +1 -1
- data/lib/geocoder/lookups/ipqualityscore.rb +50 -0
- data/lib/geocoder/lookups/melissa_street.rb +41 -0
- data/lib/geocoder/lookups/photon.rb +89 -0
- data/lib/geocoder/lookups/uk_ordnance_survey_names.rb +1 -1
- data/lib/geocoder/results/abstract_api.rb +146 -0
- data/lib/geocoder/results/amazon_location_service.rb +57 -0
- data/lib/geocoder/results/esri.rb +5 -2
- data/lib/geocoder/results/geoapify.rb +179 -0
- data/lib/geocoder/results/ipqualityscore.rb +54 -0
- data/lib/geocoder/results/mapbox.rb +10 -4
- data/lib/geocoder/results/melissa_street.rb +46 -0
- data/lib/geocoder/results/photon.rb +119 -0
- data/lib/geocoder/version.rb +1 -1
- metadata +17 -2
@@ -0,0 +1,119 @@
|
|
1
|
+
require 'geocoder/results/base'
|
2
|
+
|
3
|
+
module Geocoder::Result
|
4
|
+
class Photon < Base
|
5
|
+
def name
|
6
|
+
properties['name']
|
7
|
+
end
|
8
|
+
|
9
|
+
def address(_format = :full)
|
10
|
+
parts = []
|
11
|
+
parts << name if name
|
12
|
+
parts << street_address if street_address
|
13
|
+
parts << city
|
14
|
+
parts << state if state
|
15
|
+
parts << postal_code
|
16
|
+
parts << country
|
17
|
+
|
18
|
+
parts.join(', ')
|
19
|
+
end
|
20
|
+
|
21
|
+
def street_address
|
22
|
+
return unless street
|
23
|
+
return street unless house_number
|
24
|
+
|
25
|
+
"#{house_number} #{street}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def house_number
|
29
|
+
properties['housenumber']
|
30
|
+
end
|
31
|
+
|
32
|
+
def street
|
33
|
+
properties['street']
|
34
|
+
end
|
35
|
+
|
36
|
+
def postal_code
|
37
|
+
properties['postcode']
|
38
|
+
end
|
39
|
+
|
40
|
+
def city
|
41
|
+
properties['city']
|
42
|
+
end
|
43
|
+
|
44
|
+
def state
|
45
|
+
properties['state']
|
46
|
+
end
|
47
|
+
|
48
|
+
def state_code
|
49
|
+
''
|
50
|
+
end
|
51
|
+
|
52
|
+
def country
|
53
|
+
properties['country']
|
54
|
+
end
|
55
|
+
|
56
|
+
def country_code
|
57
|
+
''
|
58
|
+
end
|
59
|
+
|
60
|
+
def coordinates
|
61
|
+
return unless geometry
|
62
|
+
return unless geometry[:coordinates]
|
63
|
+
|
64
|
+
geometry[:coordinates].reverse
|
65
|
+
end
|
66
|
+
|
67
|
+
def geometry
|
68
|
+
return unless data['geometry']
|
69
|
+
|
70
|
+
symbol_hash data['geometry']
|
71
|
+
end
|
72
|
+
|
73
|
+
def bounds
|
74
|
+
properties['extent']
|
75
|
+
end
|
76
|
+
|
77
|
+
# Type of the result (OSM object type), one of:
|
78
|
+
#
|
79
|
+
# :node
|
80
|
+
# :way
|
81
|
+
# :relation
|
82
|
+
#
|
83
|
+
def type
|
84
|
+
{
|
85
|
+
'N' => :node,
|
86
|
+
'W' => :way,
|
87
|
+
'R' => :relation
|
88
|
+
}[properties['osm_type']]
|
89
|
+
end
|
90
|
+
|
91
|
+
def osm_id
|
92
|
+
properties['osm_id']
|
93
|
+
end
|
94
|
+
|
95
|
+
# See: https://wiki.openstreetmap.org/wiki/Tags
|
96
|
+
def osm_tag
|
97
|
+
return unless properties['osm_key']
|
98
|
+
return properties['osm_key'] unless properties['osm_value']
|
99
|
+
|
100
|
+
"#{properties['osm_key']}=#{properties['osm_value']}"
|
101
|
+
end
|
102
|
+
|
103
|
+
private
|
104
|
+
|
105
|
+
def properties
|
106
|
+
@properties ||= data['properties'] || {}
|
107
|
+
end
|
108
|
+
|
109
|
+
def symbol_hash(orig_hash)
|
110
|
+
{}.tap do |result|
|
111
|
+
orig_hash.each_key do |key|
|
112
|
+
next unless orig_hash[key]
|
113
|
+
|
114
|
+
result[key.to_sym] = orig_hash[key]
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
data/lib/geocoder/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: geocoder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Reisner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-02 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Object geocoding (by street or IP address), reverse geocoding (coordinates
|
14
14
|
to street address), distance queries for ActiveRecord and Mongoid, result caching,
|
@@ -39,6 +39,9 @@ files:
|
|
39
39
|
- lib/generators/geocoder/migration_version.rb
|
40
40
|
- lib/geocoder.rb
|
41
41
|
- lib/geocoder/cache.rb
|
42
|
+
- lib/geocoder/cache_stores/base.rb
|
43
|
+
- lib/geocoder/cache_stores/generic.rb
|
44
|
+
- lib/geocoder/cache_stores/redis.rb
|
42
45
|
- lib/geocoder/calculations.rb
|
43
46
|
- lib/geocoder/cli.rb
|
44
47
|
- lib/geocoder/configuration.rb
|
@@ -49,7 +52,9 @@ files:
|
|
49
52
|
- lib/geocoder/kernel_logger.rb
|
50
53
|
- lib/geocoder/logger.rb
|
51
54
|
- lib/geocoder/lookup.rb
|
55
|
+
- lib/geocoder/lookups/abstract_api.rb
|
52
56
|
- lib/geocoder/lookups/amap.rb
|
57
|
+
- lib/geocoder/lookups/amazon_location_service.rb
|
53
58
|
- lib/geocoder/lookups/baidu.rb
|
54
59
|
- lib/geocoder/lookups/baidu_ip.rb
|
55
60
|
- lib/geocoder/lookups/ban_data_gouv_fr.rb
|
@@ -59,6 +64,7 @@ files:
|
|
59
64
|
- lib/geocoder/lookups/dstk.rb
|
60
65
|
- lib/geocoder/lookups/esri.rb
|
61
66
|
- lib/geocoder/lookups/freegeoip.rb
|
67
|
+
- lib/geocoder/lookups/geoapify.rb
|
62
68
|
- lib/geocoder/lookups/geocoder_ca.rb
|
63
69
|
- lib/geocoder/lookups/geocodio.rb
|
64
70
|
- lib/geocoder/lookups/geoip2.rb
|
@@ -73,6 +79,7 @@ files:
|
|
73
79
|
- lib/geocoder/lookups/ipdata_co.rb
|
74
80
|
- lib/geocoder/lookups/ipgeolocation.rb
|
75
81
|
- lib/geocoder/lookups/ipinfo_io.rb
|
82
|
+
- lib/geocoder/lookups/ipqualityscore.rb
|
76
83
|
- lib/geocoder/lookups/ipregistry.rb
|
77
84
|
- lib/geocoder/lookups/ipstack.rb
|
78
85
|
- lib/geocoder/lookups/latlon.rb
|
@@ -82,11 +89,13 @@ files:
|
|
82
89
|
- lib/geocoder/lookups/maxmind.rb
|
83
90
|
- lib/geocoder/lookups/maxmind_geoip2.rb
|
84
91
|
- lib/geocoder/lookups/maxmind_local.rb
|
92
|
+
- lib/geocoder/lookups/melissa_street.rb
|
85
93
|
- lib/geocoder/lookups/nationaal_georegister_nl.rb
|
86
94
|
- lib/geocoder/lookups/nominatim.rb
|
87
95
|
- lib/geocoder/lookups/opencagedata.rb
|
88
96
|
- lib/geocoder/lookups/osmnames.rb
|
89
97
|
- lib/geocoder/lookups/pelias.rb
|
98
|
+
- lib/geocoder/lookups/photon.rb
|
90
99
|
- lib/geocoder/lookups/pickpoint.rb
|
91
100
|
- lib/geocoder/lookups/pointpin.rb
|
92
101
|
- lib/geocoder/lookups/postcode_anywhere_uk.rb
|
@@ -105,7 +114,9 @@ files:
|
|
105
114
|
- lib/geocoder/query.rb
|
106
115
|
- lib/geocoder/railtie.rb
|
107
116
|
- lib/geocoder/request.rb
|
117
|
+
- lib/geocoder/results/abstract_api.rb
|
108
118
|
- lib/geocoder/results/amap.rb
|
119
|
+
- lib/geocoder/results/amazon_location_service.rb
|
109
120
|
- lib/geocoder/results/baidu.rb
|
110
121
|
- lib/geocoder/results/baidu_ip.rb
|
111
122
|
- lib/geocoder/results/ban_data_gouv_fr.rb
|
@@ -115,6 +126,7 @@ files:
|
|
115
126
|
- lib/geocoder/results/dstk.rb
|
116
127
|
- lib/geocoder/results/esri.rb
|
117
128
|
- lib/geocoder/results/freegeoip.rb
|
129
|
+
- lib/geocoder/results/geoapify.rb
|
118
130
|
- lib/geocoder/results/geocoder_ca.rb
|
119
131
|
- lib/geocoder/results/geocodio.rb
|
120
132
|
- lib/geocoder/results/geoip2.rb
|
@@ -129,6 +141,7 @@ files:
|
|
129
141
|
- lib/geocoder/results/ipdata_co.rb
|
130
142
|
- lib/geocoder/results/ipgeolocation.rb
|
131
143
|
- lib/geocoder/results/ipinfo_io.rb
|
144
|
+
- lib/geocoder/results/ipqualityscore.rb
|
132
145
|
- lib/geocoder/results/ipregistry.rb
|
133
146
|
- lib/geocoder/results/ipstack.rb
|
134
147
|
- lib/geocoder/results/latlon.rb
|
@@ -138,11 +151,13 @@ files:
|
|
138
151
|
- lib/geocoder/results/maxmind.rb
|
139
152
|
- lib/geocoder/results/maxmind_geoip2.rb
|
140
153
|
- lib/geocoder/results/maxmind_local.rb
|
154
|
+
- lib/geocoder/results/melissa_street.rb
|
141
155
|
- lib/geocoder/results/nationaal_georegister_nl.rb
|
142
156
|
- lib/geocoder/results/nominatim.rb
|
143
157
|
- lib/geocoder/results/opencagedata.rb
|
144
158
|
- lib/geocoder/results/osmnames.rb
|
145
159
|
- lib/geocoder/results/pelias.rb
|
160
|
+
- lib/geocoder/results/photon.rb
|
146
161
|
- lib/geocoder/results/pickpoint.rb
|
147
162
|
- lib/geocoder/results/pointpin.rb
|
148
163
|
- lib/geocoder/results/postcode_anywhere_uk.rb
|