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