underpass 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Gem Version](https://badge.fury.io/rb/underpass.svg)](https://badge.fury.io/rb/underpass)
|
4
4
|
[![Build Status](https://www.travis-ci.org/haiafara/underpass.svg?branch=master)](https://www.travis-ci.org/haiafara/underpass)
|
5
|
+
[![Coverage Status](https://coveralls.io/repos/github/haiafara/underpass/badge.svg?branch=master)](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:
|