Фильтрация данных openstreetmap для postgis
Я создаю базу данных postgis и хочу использовать отфильтрованные данные OpenStreetMap.
Для этого я попробовал следующий процесс:
- Скачал файл planet.osm.bz2 с https://planet.osm.org/
- Распаковывается в *.osm с помощью bzip2
- Отфильтровал файл с помощью osmfilter через командную строку
- Загрузил отфильтрованный файл *.osm в мою базу данных, используя osm2pgsql в командной строке
Для моей первой попытки я отфильтровал только по площади.
Однако на шаге 4 с использованием osm2pgsql я получаю следующую ошибку в командной строке: "Ошибка Osm2pgsql из-за ОШИБКИ: ошибка синтаксического анализа XML в строке 3137102, столбец 61: неправильно сформирован (недопустимый токен) "
Как показано из командной строки на моем компьютере с Windows:
Z:\OpenStreetMap>osm2pgsql -U postgres -W -m -d osm -p filteredland -S "C:\Progr
am Files (x86)\HOTOSM\share\default.style" filteredland2.osm
osm2pgsql version 0.92.0 (64 bit id space)
Password:
Using built-in tag processing pipeline
Using projection SRS 3857 (Spherical Mercator)
Setting up table: filteredland_point
Setting up table: filteredland_line
Setting up table: filteredland_polygon
Setting up table: filteredland_roads
Allocating memory for sparse node cache
Node-cache: cache=800MB, maxblocks=12800*65536, allocation method=1
Mid: Ram, scale=100
Reading in file: filteredland2.osm
Using XML parser.
Processing: Node(1230k 61.5k/s) Way(0k 0.00k/s) Relation(0 0.00/s)node cache: st
ored: 1233078(100.00%), storage efficiency: 50.00% (dense blocks: 0, sparse node
s: 1233078), hit rate: -nan(ind)%
Osm2pgsql failed due to ERROR: XML parsing error at line 3137102, column 61: not
well-formed (invalid token)
Я также попробовал два альтернативных маршрута, которые также потерпели неудачу:
Скачивание planet.pbf -> Преобразование в.o5m с помощью osmconvert -> Фильтрация с помощью osmfilter
Загрузка planet.pbf -> Преобразование в.osm с помощью osmconvert -> Фильтрация с помощью osmfilter(дал предупреждения) -> Использование osm2pgsql для передачи в базу данных
Кто-нибудь знает, как избежать этой ошибки или имеет опыт фильтрации файла planet.osm и загрузки в postgis?
1 ответ
Я предлагаю использовать Osmium вместо osmfilter, для которого не требуется сначала преобразовывать планету в другой формат, и он изначально может возвращать данные PBF, которые могут обрабатываться непосредственно osm2pgsql. Это тоже быстрее.