osm2pgsql: функция AddGeometryColumn не существует

Я хочу, чтобы импортировать файл OSM в мою базу данных PostgreSQL (Windows, Postgres версии 9.2) с помощью инструмента Osm2pgsql.

когда я запускаю следующую команду

osm2pgsql.exe --create -d mydb artyom.xml -U myuser -W --style default.style

Я получаю ошибку

SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, 'POINT', 2 );
 failed: FEHLER:  Funktion addgeometrycolumn(unknown, unknown, integer, unknown,
 integer) existiert nicht
LINE 1: SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, ...
               ^
HINT:  Keine Funktion stimmt mit dem angegebenen Namen und den Argumenttypen ├╝b
erein. Sie m├╝ssen m├Âglicherweise ausdr├╝ckliche Typumwandlungen hinzuf├╝gen.

Error occurred, cleaning up

перевод с немецкого:

SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, 'POINT', 2 );
 failed: ERROR:  Function addgeometrycolumn(unknown, unknown, integer, unknown,
 integer) doesn't exist
LINE 1: SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, ...
               ^
HINT: No function matches the specified name and argument types. Maybe you need
to make explicit casts.

Error occurred, cleaning up

как я могу это исправить?

2 ответов


похоже, вы не добавили поддержку PostGIS в базу данных, которую пытаетесь использовать osm2pgsql.exe on. См.документация по установке PostGIS (2.0).

поскольку вы используете PostGIS 2.0, вы должны иметь возможность просто CREATE EXTENSION postgis; для загрузки PostGIS. Эта команда должна выполняться как суперпользователь-обычно пользователь postgres. Использовать:

psql -U postgres mydbname

для подключения как пользователь postgres.

похоже, что по крайней мере Windows-сборки osm2pgsql не поддерживают PostGIS 2.0 - или не было около шести месяцев назад, во всяком случае. См.этот отчет о проблеме на OSM GitHub и инструкции по настройке базы данных PostGIS 2 для совместимости с osm2pgsql, которая ожидает PostGIS 1.x. Будущие читатели должны проверить, что эти шаги все еще необходимы, прежде чем продолжить; вероятно, что osm2pgsql для Windows будет обновлен для поддержки PostGIS 2 в какой-то момент.


довольно поздно, но я споткнулся и споткнулся об этот сентябрь ' 16. Строка SQL:

SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, 'POINT', 2 );

необходимо переписать как подпись этой функции:

('catalog','schema','table','column',srid,'type',type_mod,boolean);

белое пространство нематериально. Так что-то вроде следующего следует сделать трюк:

SELECT AddGeometryColumn('','','planet_osm_point', 'way', 900913, 'POINT', 2,true );

проверьте один из фактических операторов INSERT для правильного имени столбца, который в моей версии является "geom".

убедитесь, что varchars указаны, целые числа и boolean не кавычки и, конечно, что правильные значения находятся в местах.

удачи.