В первую очередь хочу сказать спасибо за этот проект.
Я использую данные от сюда: http://gis-lab.info/projects/osm_dump/
Ранее я использовал файл RU.osm.pbf, но теперь возник вопрос расширения системы и потребовались данные по странам СНГ и я сейчас пытаюсь обработать файл local.osm.pbf.
Данные я перегоняю в PostgreSQL с помощью osm2pgsql. Далее составляю materialized view со списками городов и т.д.
Мне сейчас потребовалось найти для каждого города страну в которую он входит, но проблема в том что похоже в файле присутствуют не все полигоны территории России. Похоже что у вас при обрезке данных planet osm теряются часть полигонов с admin_level = 2.
Вот запрос, который должен вернуть для городов список стран:
Код: Выделить всё
SELECT x.osm_id,
x.name,
x.place,
( SELECT planet_osm_polygon.name
FROM planet_osm_polygon
WHERE st_intersects(planet_osm_polygon.way, x.way) AND admin_level ='2'
LIMIT 1) AS country_name
FROM planet_osm_polygon as x
WHERE (x.place = ANY (ARRAY['state':: text, 'city'::text, 'town'::text, 'village'::text])) AND name = 'Санкт-Петербург'
ORDER BY name, area DESC LIMIT 10;
Но тот же запрос с admin_level = '3' возвращаеются данные по региону.
Пожалуйста, посмотрите все ли данные включаются в local.osm.pbf и можно ли включить туда все полигоны стран.