OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

#1 2018-06-07 06:30:43

EvgenyGavrilov
New Member
Registered: 2018-06-07
Posts: 1

Использование таблиц planet_osm_point и planet_osm_polygon

Доброе время суток!
Можете подсказать или дать ссылку на документацию по структуре данных таблиц planet_osm_point и planet_osm_polygon

Есть задача поиск города по названию и поиск города по координатам
Я составил два таких запроса:
1. Поиск города по координатам

SELECT
	point.osm_id,
	point.name,
	point.place,
	point.admin_level,
	polygon.osm_id,
	polygon.name,
	polygon.place,
	polygon.admin_level
FROM planet_osm_polygon AS polygon
INNER JOIN planet_osm_point AS point ON ST_Within(point.way, polygon.way)
WHERE
	ST_Within(ST_Transform(ST_SetSRID(ST_Point(37.584007, 55.692067), 4326), 3857), polygon.way) AND
	polygon.place IN ('village','town','city') AND
	point.place IN ('village','town','city')
ORDER BY point.admin_level

Проблема: такой sql запрос выдает несколько записей, а хотелось бы получить конкретно город Москва.
Результат выполнения запроса 5b82c3346f1fa417d5053a16489446d9-full.png


2. Поиск города по именованию

SELECT
	point.osm_id,
	point.name,
	point.place,
	point.admin_level,
	polygon.osm_id,
	polygon.name,
	polygon.admin_level,
	polygon.place
FROM planet_osm_point AS point
INNER JOIN planet_osm_polygon AS polygon ON ST_Within(point.way, polygon.way)
WHERE
	point.name LIKE '%Красно%' AND
	polygon.admin_level = '4' AND
	point.place IN ('village', 'town', 'city');

Проблема: такой sql запрос выдает города и регионы на несколько языках, в данном случаи на русской и украинском, причем город один и тот же.
Хотелось бы избежать дублей и выбрать правильный вариант. Так же хотелось бы искать этот город не только на русском языке, но и на английском языке. Такое возможно?
Результат выполнения запроса faf7dd91e9b9a4c357d0927b4407da30-full.png

Буду очень благодарен если подскажите как быть в такой ситуации или дадите ссылку на документацию. Сам не смог найти.

Offline

#2 2018-06-07 19:01:11

Виталий Жаков
Member
Registered: 2017-12-13
Posts: 5

Re: Использование таблиц planet_osm_point и planet_osm_polygon

Добрый день!


Проблема: такой sql запрос выдает несколько записей, а хотелось бы получить конкретно город Москва.

Первым идёт Москва. В чём вопрос?

Проблема: такой sql запрос выдает города и регионы на несколько языках, в данном случаи на русской и украинском, причем город один и тот же.


Судя по результату, дубль из-за полигона.

Язык идёт в полях name:ru (русский).

Offline

Board footer

Powered by FluxBB