waterway=riverbank хранится в PBF как линия, а не как полигон (решено)

Проблема указана в заголовке. Проблема глобальная, т.к. я ее наблюдал прямо на planet.pbf.

Как я понимаю, при экспорте планеты в PBF применяется набор правил, указывающих, объекты с какими тегами куда относить (points, lines, multilinestrings, multipolygons, other_relations - такие слои показывает QGIS при импорте PBF). И, видать, весь ключ waterway=* с горяча был добавлен в раздел линий с успешно забытым полигоном waterway=riverbank (а еще есть waterway=dam, может еще кто вспомнит).

Короче, чё делать-то? Где эти правила, где их исправлять и куда отправлять пулл-реквест?

Решение: править конфиг для OGR.

:slight_smile:
Итак, PBF хранит сырые данные OSM в бинарном, сжатом виде. Т.е. всё так же ноды с координатами, линии - как список нод и отношения.
А вот

это уже конвертация OGR(GDAL). А правила по которым он преобразует выглядят например так:
http://www.ram-solutions.nl/wp-content/uploads/2015/11/osm_ogr_to_imposm.txt

Я подозревал это, но дело втом, что ошибку я обнаружил при использовании ogr2ogr, где эти правила вписываются в ini-файл:

ogr2ogr -f CSV -t_srs EPSG:4326 CSV_OUTPUT_DIR2 test.pbf -lco GEOMETRY=AS_WKT --config OSM_CONFIG_FILE ~/my-osm-conf.ini

И в этом конфиг-файле waterway присутствует в списке мультиполигонов. :confused: В разделе lines он тоже есть, для проверки времено убрал, не помогло: он все равно выводит waterway=riverbank в lines, но вписывает этот тег в стобец “other tags”. Короче, отказывается признавать этот объект мультиполигоном.

test.pbf я вырезаю из planet.pbf через osmconvert --complex-ways с промежуточным преобразованием в pbf->o5m->pbf.

Кто слепой? Я слепой. В самом верху конфига:

# put here the name of keys for ways that are assumed to be polygons if they are closed
# see http://wiki.openstreetmap.org/wiki/Map_Features
closed_ways_are_polygons=aeroway,amenity,boundary,building,craft,geological,historic,landuse,leisure,military,natural,office,place,shop,sport,tourism

Сбило меня еще то, что некоторые другие ривербанки всё-таки превращались в полигоны, но на них висели и другие теги, которые могли повлиять на решение. Но так совпало, что эти ривербанки были не просто замкнутым way-контуром, а отношением типа мультиполигон, т.к. по разным причинам либо склеивались из нескольких линий, либо имели inner-вырезку.

Такие дела. Полдня провозился. Спасибо.

:slight_smile: Я думал ты первым делом проверил, что конкретные объекты действительно подходят на роль полигонов.
Но у меня к тебе другая просьба, раз у тебя есть файл планеты, можешь мне вырезать из неё границы?

osmfilter.exe %1 --keep="type=boundary AND boundary=administrative place=city =town =village =hamlet =isolated_dwelling" --drop-author --drop-version -o=atd_places.o5m

Планета у меня старая, ноябрь 2016 г., сойдет? Но я уже качаю свежую, самому нужна. 2 Мбайт/сек с какого-то торрента. 1 источник. Это до вечера.

И еще, admin_level ты в фильтре намеренно не указал?

Я готов подождать. Да, не указывал, нужны все уровни.

https://yadi.sk/d/4Zs_rl9t3NNnEe

1.2 Гб О_О
Я думал, будет меньше. Возможно osmfilter включил ненужные теги, которые были на объектах, частью которых является админграница (контуры лесов там и всякое такое).

Спасибо. Да, там остаётся много лишнего, потом это приходится ещё раз уже другими программами прогонять.