17

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

当我运行以下命令时

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

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

4

2 回答 2

25

看起来您尚未将 PostGIS 支持添加到您尝试使用的数据库osm2pgsql.exe中。请参阅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 数据库以与需要 PostGIS 1.x 的 osm2pgsql 兼容的说明。未来的读者应该在继续之前检查这些步骤是否仍然需要;Windows可能osm2pgsql会在某个时候更新以支持 PostGIS 2。

于 2012-10-30T05:54:03.897 回答
3

相当晚了,但我在 16 年 9 月偶然发现并绊倒了。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 被引用,整数和布尔值未被引用,当然正确的值在适当的位置。

祝你好运。

于 2016-09-22T13:42:37.070 回答