Є проблема. Я використовую osm2pgsql -s --keep-coastlines … Після цього для Одеси, якщо виконати наступні запити отримаємо:
SELECT array_to_string((SELECT parts FROM planet_osm_rels WHERE id = 1413934), ', ') – список ІД ліній, що складають межу Одеси
“26150437, 4529551, 118116543, 118116544, 118116184, 118116187, 98611821, 42345662, 130190036, 108419031, 130190135, 98611822, 130194756, 4530497”
А тепер якщо спробувати вибрати ці лінії
SELECT array_to_string(ARRAY(SELECT osm_id FROM planet_osm_line WHERE osm_id IN (
SELECT parts[k] AS v
FROM (SELECT generate_subscripts(parts, 1) AS k, id, parts FROM planet_osm_rels) foo
WHERE id = 1413934
)),', ')
Отримуємо обрізаний результат:
“4529551, 108419031, 118116184, 118116187, 130194756, 4530497, 98611821, 118116543, 118116544”
Виходить, що osm2pgsql проігнорував частину ліній, з відношення кордону Одеси. Як це побороти?