underpass 0.0.5 → 0.0.6
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/README.md +17 -8
- data/lib/underpass.rb +10 -1
- data/lib/underpass/ql/parser.rb +13 -1
- data/lib/underpass/ql/request.rb +10 -5
- data/lib/underpass/ql/shape.rb +5 -0
- data/lib/underpass/version.rb +20 -0
- metadata +24 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38e561ec9d01ca1013783c0ea8cedb34b00d52938db669d3f5feb4a10d7fd155
|
4
|
+
data.tar.gz: a99031218fec8de7c13d48df9c54e222445a2eb9dbb3399b1ab0605fe390d263
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d89ebcb48cb6309caee1947acde9f8c946568256017cf4387155952ed2c4e13dbfc8a1d226b4127db7580fe7b70ad7c7250094124f2b9b81eef26338db650e6
|
7
|
+
data.tar.gz: 9ea52cceb5fcf0edb4ee634a4c012e6ffbc65c288be0f632fe77639f87aa6b4cee8996315eda23612515bc88cc72abd928f872249cbef95efb3f7e0712747cfe
|
data/README.md
CHANGED
@@ -2,8 +2,9 @@
|
|
2
2
|
|
3
3
|
[](https://badge.fury.io/rb/underpass)
|
4
4
|
[](https://www.travis-ci.org/haiafara/underpass)
|
5
|
+
[](https://coveralls.io/github/haiafara/underpass?branch=master)
|
5
6
|
|
6
|
-
A library that makes it easy to
|
7
|
+
A library that makes it easy to query the [Overpass API](https://wiki.openstreetmap.org/wiki/Overpass_API) and translate its responses into [RGeo](https://github.com/rgeo/rgeo) objects.
|
7
8
|
|
8
9
|
## Installation
|
9
10
|
|
@@ -17,13 +18,21 @@ Or put it in your Gemfile:
|
|
17
18
|
|
18
19
|
## Usage
|
19
20
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
21
|
+
```ruby
|
22
|
+
# require the library if it's not autoloaded
|
23
|
+
require 'underpass'
|
24
|
+
# create a bounding box in which the query will be run
|
25
|
+
f = RGeo::Geographic.spherical_factory
|
26
|
+
bbox = f.parse_wkt('POLYGON ((23.669 47.65, 23.725 47.65, 23.725 47.674, 23.669 47.674, 23.669 47.65))')
|
27
|
+
# provide the query
|
28
|
+
op_query = 'way["heritage:operator"="lmi"]["ref:ro:lmi"="MM-II-m-B-04508"];'
|
29
|
+
# perform the query and get your results
|
30
|
+
result = Underpass::QL::Query.perform(bbox, op_query)
|
31
|
+
```
|
32
|
+
|
33
|
+
## To Do
|
34
|
+
|
35
|
+
Have a look at the [issue tracker](https://github.com/haiafara/underpass/issues).
|
27
36
|
|
28
37
|
## Contributing
|
29
38
|
|
data/lib/underpass.rb
CHANGED
@@ -13,7 +13,16 @@ end
|
|
13
13
|
# Example usage
|
14
14
|
#
|
15
15
|
# require 'underpass'
|
16
|
+
# wkt = <<-WKT
|
17
|
+
# POLYGON ((
|
18
|
+
# 23.669 47.65,
|
19
|
+
# 23.725 47.65,
|
20
|
+
# 23.725 47.674,
|
21
|
+
# 23.669 47.674,
|
22
|
+
# 23.669 47.65
|
23
|
+
# ))
|
24
|
+
# WKT
|
16
25
|
# f = RGeo::Geographic.spherical_factory
|
17
|
-
# bbox = f.parse_wkt(
|
26
|
+
# bbox = f.parse_wkt(wkt)
|
18
27
|
# op_query = 'way["heritage:operator"="lmi"]["ref:ro:lmi"="MM-II-m-B-04508"];'
|
19
28
|
# Underpass::QL::Query.perform(bbox, op_query)
|
data/lib/underpass/ql/parser.rb
CHANGED
@@ -21,8 +21,12 @@ module Underpass
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def matches
|
24
|
+
@nodes.each_value do |node|
|
25
|
+
@matches << point_from_node(node) if node.key?(:tags)
|
26
|
+
end
|
27
|
+
|
24
28
|
@ways.each_value do |way|
|
25
|
-
@matches <<
|
29
|
+
@matches << polygon_from_way(way, @nodes) if way.key?(:tags)
|
26
30
|
end
|
27
31
|
|
28
32
|
@matches
|
@@ -30,6 +34,14 @@ module Underpass
|
|
30
34
|
|
31
35
|
private
|
32
36
|
|
37
|
+
def point_from_node(node)
|
38
|
+
Underpass::QL::Shape.point_from_node(node)
|
39
|
+
end
|
40
|
+
|
41
|
+
def polygon_from_way(way, nodes)
|
42
|
+
Underpass::QL::Shape.polygon_from_way(way, nodes)
|
43
|
+
end
|
44
|
+
|
33
45
|
def extract_indexed_nodes(elements)
|
34
46
|
nodes = elements.select { |e| e[:type] == 'node' }
|
35
47
|
nodes.map { |e| [e[:id], e] }.to_h
|
data/lib/underpass/ql/request.rb
CHANGED
@@ -4,8 +4,8 @@ module Underpass
|
|
4
4
|
module QL
|
5
5
|
# Deals with performing the Overpass API request
|
6
6
|
class Request
|
7
|
-
API_URI = 'https://overpass-api.de/api/interpreter'
|
8
|
-
QUERY_TEMPLATE = <<-TEMPLATE
|
7
|
+
API_URI = 'https://overpass-api.de/api/interpreter'
|
8
|
+
QUERY_TEMPLATE = <<-TEMPLATE
|
9
9
|
[out:json][timeout:25]BBOX;
|
10
10
|
(
|
11
11
|
QUERY
|
@@ -22,9 +22,14 @@ module Underpass
|
|
22
22
|
|
23
23
|
# Performs the API request
|
24
24
|
def run
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
Net::HTTP.post_form(URI(API_URI), data: build_query)
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def build_query
|
31
|
+
QUERY_TEMPLATE.sub('BBOX', @global_bbox)
|
32
|
+
.sub('QUERY', @overpass_query)
|
28
33
|
end
|
29
34
|
end
|
30
35
|
end
|
data/lib/underpass/ql/shape.rb
CHANGED
@@ -19,6 +19,11 @@ module Underpass
|
|
19
19
|
)
|
20
20
|
end
|
21
21
|
|
22
|
+
def self.point_from_node(node)
|
23
|
+
f = RGeo::Geographic.spherical_factory(srid: 4326)
|
24
|
+
f.point(node[:lon], node[:lat])
|
25
|
+
end
|
26
|
+
|
22
27
|
# There should be some sort of 'decorator' to return an object
|
23
28
|
# with the shape and a copy of the tags as
|
24
29
|
# {
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Returns the version of the gem as a <tt>Gem::Version</tt>
|
4
|
+
module Underpass
|
5
|
+
# Prints the gem version as a string
|
6
|
+
#
|
7
|
+
# @return [String]
|
8
|
+
def self.gem_version
|
9
|
+
Gem::Version.new VERSION::STRING
|
10
|
+
end
|
11
|
+
|
12
|
+
# Used to generate the version string
|
13
|
+
module VERSION
|
14
|
+
MAJOR = 0
|
15
|
+
MINOR = 0
|
16
|
+
PATCH = 6
|
17
|
+
|
18
|
+
STRING = [MAJOR, MINOR, PATCH].join('.')
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,43 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: underpass
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Janos Rusiczki
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rgeo
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 2.0.0
|
20
|
+
- - "~>"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '2.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: 2.0.0
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.0'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: rspec
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 3.8.0
|
31
40
|
- - "~>"
|
32
41
|
- !ruby/object:Gem::Version
|
33
|
-
version: 3.
|
42
|
+
version: '3.8'
|
34
43
|
type: :development
|
35
44
|
prerelease: false
|
36
45
|
version_requirements: !ruby/object:Gem::Requirement
|
37
46
|
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 3.8.0
|
38
50
|
- - "~>"
|
39
51
|
- !ruby/object:Gem::Version
|
40
|
-
version: 3.
|
52
|
+
version: '3.8'
|
41
53
|
- !ruby/object:Gem::Dependency
|
42
54
|
name: simplecov
|
43
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,8 +64,8 @@ dependencies:
|
|
52
64
|
- - "~>"
|
53
65
|
- !ruby/object:Gem::Version
|
54
66
|
version: 0.16.0
|
55
|
-
description: A library that makes it easy to query the Overpass API and translate
|
56
|
-
its responses into RGeo objects
|
67
|
+
description: " A library that makes it easy to query the Overpass API and translate
|
68
|
+
its responses into RGeo objects\n"
|
57
69
|
email: janos.rusiczki@gmail.com
|
58
70
|
executables: []
|
59
71
|
extensions: []
|
@@ -68,10 +80,13 @@ files:
|
|
68
80
|
- lib/underpass/ql/query.rb
|
69
81
|
- lib/underpass/ql/request.rb
|
70
82
|
- lib/underpass/ql/shape.rb
|
83
|
+
- lib/underpass/version.rb
|
71
84
|
homepage: http://github.com/haiafara/underpass
|
72
85
|
licenses:
|
73
86
|
- MIT
|
74
|
-
metadata:
|
87
|
+
metadata:
|
88
|
+
source_code_uri: http://github.com/haiafara/underpass
|
89
|
+
bug_tracker_uri: http://github.com/haiafara/underpass/issues
|
75
90
|
post_install_message:
|
76
91
|
rdoc_options: []
|
77
92
|
require_paths:
|