Osm2pgsql: Функция AddGeometryColumn не существует - программирование

Osm2pgsql: Функция AddGeometryColumn не существует

Я хочу импортировать файл OSM в мою базу данных PostgreSQL (Windows, Postgres Version 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

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

4b9b3361

Ответ 1

Похоже, вы не добавили поддержку 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 в какой-то момент.

Ответ 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, целые числа и логические значения некорректны и, конечно, правильные значения находятся в местах.

Удачи.