Module: PbfReverseGeocoder
- Defined in:
- lib/pbf_reverse_geocoder.rb,
lib/pbf_reverse_geocoder/version.rb,
lib/pbf_reverse_geocoder/pbf_tile_reader.rb,
lib/pbf_reverse_geocoder/tile_calculator.rb,
lib/pbf_reverse_geocoder/geometry_decoder.rb,
lib/pbf_reverse_geocoder/point_in_polygon.rb,
lib/pbf_reverse_geocoder/simple_pbf_parser.rb
Overview
Mapbox Vector Tile (MVT) に特化した簡易PBFパーサーProtocol Buffersの基本的なワイヤフォーマットをパース
Defined Under Namespace
Classes: Error, GeometryDecoder, PbfTileReader, PointInPolygon, SimplePbfParser, TileCalculator
Constant Summary collapse
- VERSION =
'0.2.0'
Class Method Summary collapse
-
.reverse_geocode(lng, lat, tiles_dir) ⇒ Hash?
リバースジオコーディングのメインエントリーポイント.
Class Method Details
.reverse_geocode(lng, lat, tiles_dir) ⇒ Hash?
リバースジオコーディングのメインエントリーポイント
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/pbf_reverse_geocoder.rb', line 26 def self.reverse_geocode(lng, lat, tiles_dir) # タイル座標を計算 tile_x, tile_y, zoom = TileCalculator.lng_lat_to_tile(lng, lat) tile_path = TileCalculator.tile_path(tile_x, tile_y, zoom, tiles_dir) # PBFタイルを読み込んでパース features = PbfTileReader.read_tile(tile_path, tile_x, tile_y, zoom).map do |feature| normalized = PbfTileReader.normalize_properties(feature[:properties]) { geometry: feature[:geometry], properties: normalized } end # 点を含むポリゴンを検索 point = [lng, lat] features.each do |feature| if PointInPolygon.contains?(point, feature[:geometry]) return feature[:properties] end end nil end |