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