我想使用工具OSM file将Osm2pgsql导入我的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
我该如何解决这个问题?
答案 0 :(得分:23)
您似乎没有将PostGIS支持添加到您尝试使用osm2pgsql.exe
的数据库。请参阅the PostGIS installation documentation (2.0)。
由于您使用的是PostGIS 2.0,因此您应该只需CREATE EXTENSION postgis;
即可加载PostGIS。此命令必须以超级用户身份运行 - 通常是用户postgres
。使用:
psql -U postgres mydbname
以用户postgres
进行连接。
似乎至少Windows osm2pgsql
的版本不支持PostGIS 2.0 - 或者大约六个月前也没有。请参阅OSM GitHub上的this issue report和instructions on how to set a PostGIS 2 database to be compatible with an osm2pgsql that expects PostGIS 1.x。未来的读者在继续之前应该检查这些步骤是否仍然是实际需要的; Windows osm2pgsql
可能会在某些时候更新为支持PostGIS 2。
答案 1 :(得分:2)
相当晚,但我偶然发现并绊倒了这个9月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,不引用整数和布尔值,当然正确的值在这些位置。
祝你好运。