Ищите указанный тип места с OpenStreetMap и Nominatim - PullRequest
1 голос
/ 07 апреля 2020

В моем приложении я использую Leaflet с OpenStreetMap. Я также использую Nominatim, чтобы получить информацию о месте. Я хочу проверить, является ли место заправкой. Но когда я указываю на заправочную станцию ​​и получаю информацию о месте, файл JSON часто имеет другое свойство "type". Это может быть:

type: "fuel"   <-- this is great
or
type: "convenience"
or
type: "yes"
or maybe even other

Могу ли я как-то указать, является ли место действительно заправочной станцией?

Пример JSON выход для АЗС https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=50.0487556&lon=21.999057381458194

place_id: 143194204, licence: "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright", osm_type: "way", osm_id: 230603036, lat: "50.0487556", …}
place_id: 143194204
licence: "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright"
osm_type: "way"
osm_id: 230603036
lat: "50.0487556"
lon: "21.999057381458194"
place_rank: 30
category: "shop"
type: "convenience"
importance: 0
addresstype: "shop"
name: "Orlen"
display_name: "Orlen, 10, Warszawska, 1000-Lecia, Rzeszów, województwo podkarpackie, 35-205, Polska"
address: {convenience: "Orlen", house_number: "10", road: "Warszawska", suburb: "1000-Lecia", city: "Rzeszów", …}
boundingbox: (4) ["50.0486885", "50.0488243", "21.9989449", "21.9991699"]
__proto__: Object

Я рассмотрел вопрос об использовании Google Places API с API геокодирования, но для геокодирования требуется платежный аккаунт, поэтому я не буду его использовать.

РЕДАКТИРОВАТЬ:

Благодаря ниже комментарий, мне удалось получить необработанные данные из OSM с помощью osm_id из вызова обратного геокодирования nominatim. Просто используйте: http://overpass-api.de/api/interpreter?data=[out:json];way(MY_OSM_ID);out;

1 Ответ

0 голосов
/ 08 апреля 2020

Объект из вашего вопроса - это и бензоколонка, и магазин. Он помечен как amenity=fuel и shop=convenience. Однако Nominatim должен решить, какой type печатать, и, очевидно, удобство имеет более высокий приоритет, чем топливо.

Если вы хотите проверить теги определенного объекта c, то Nominatim, вероятно, является неправильным выбором. Nominatim - это геокодер, предназначенный для преобразования имен в географические c координаты (геокодирование) или наоборот (обратное геокодирование). Если вы уже знаете идентификатор OSM и тип element , вы можете загрузить его необработанные данные непосредственно из OSM, чтобы проверить все оригинальные теги. Если вы просто знаете приблизительное местоположение, вы можете использовать Overpass API для загрузки определенных c POI (например, заправочных станций) в этой области.

...