osm2pgsql:函数AddGeometryColumn不存在

DP_*_*DP_ 15 postgresql postgis openstreetmap postgresql-9.2

我想使用Osm2pgsql工具将OSM文件导入我的PostgreSQL数据库(Windows,Postgres版本9.2).

当我运行以下命令

osm2pgsql.exe --create -d mydb artyom.xml -U myuser -W --style default.style
Run Code Online (Sandbox Code Playgroud)

我收到了错误

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
Run Code Online (Sandbox Code Playgroud)

德语翻译:

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
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

Cra*_*ger 24

您似乎没有将PostGIS支持添加到您尝试使用的数据库中osm2pgsql.exe.请参阅PostGIS安装文档(2.0).

由于您使用的是PostGIS 2.0,因此您应该只能CREATE EXTENSION postgis;加载PostGIS.此命令必须以超级用户身份运行 - 通常是用户postgres.使用:

psql -U postgres mydbname
Run Code Online (Sandbox Code Playgroud)

以用户身份连接postgres.

看来至少Windows版本osm2pgsql不支持PostGIS 2.0 - 或者大约六个月前也没有.请参阅OSM GitHub上的此问题报告,以及有关如何将PostGIS 2数据库设置为与期望PostGIS 1.x的osm2pgsql兼容的说明.未来的读者在继续之前应该检查这些步骤是否仍然是实际需要的; osm2pgsqlWindows 可能会在某些时候更新为支持PostGIS 2.