Всем привет.
Обнаружил проблему при конвертации pbf файлов в postgres с помощью osm2pgsql.
Для некоторых стран отстутствует полигон страны, хотя есть линии границы. Подскажите, как можно конвертировать такие незамкнутые границы в полигоны, есть ли какие-то опции у osm2pgsql позволяющие это сделать? Спасибо.
Пример:
osm2pgsql -d osm2pgsql -H localhost -P 5432 -U postgres -W \
--hstore-all --create --cache 10240 \
--latlong --multi-geometry --keep-coastlines country.osm.pbf
Тут видно, что полигона в таблице полигонов нет:
select string_agg(distinct name, ', ') as name from planet_osm_polygon
where (place='country' or admin_level='2') and tags->'name:en' = 'Spain' group by osm_id;
name
------
(0 rows)
Тут видно, что граница есть:
sudo -u postgres psql -d osm2pgsql -c "select ST_AsGeoJSON(ST_Multi(ST_LineMerge(ST_Union(way)))) from planet_osm_line where name='España' and boundary='administrative' group by osm_id;" > line.json
Тут видно, что при попытке построить полигон, ничего не получается:
sudo -u postgres psql -d osm2pgsql -c "select ST_AsGeoJSON(ST_Polygonize(way)) from planet_osm_line where name='España' and boundary='administrative' group by osm_id;" > poly.json