我正在使用PADUS OBI shape file,而不是那可能很重要。
我正在使用默认选项通过shp2pgsql运行shape文件,如:
shp2pgsql PADUS_1_1_CBI_Edition.shp > PADUS.sql
然后我尝试将SQL导入Postgres:
psql -d padusdb -f PADUS.sql
收到以下错误:
psql:PADUS.sql:36: ERROR: function addgeometrycolumn(unknown, unknown, unknown, unknown, unknown, integer) does not exist
LINE 1: SELECT AddGeometryColumn('','padus_1_1_cbi_edition','the_geo...
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
我安装了PostGIS。
导致错误的SQL命令(放入其他空数据库)是:
SET CLIENT_ENCODING TO UTF8;
SET STANDARD_CONFORMING_STRINGS TO ON;
BEGIN;
CREATE TABLE "padus_1_1_cbi_edition" (gid serial PRIMARY KEY,
"us_id" int4,
"category" varchar(10),
"gis_acres" numeric,
...
BUNCH OF COLUMNS, none of which is called "the_geom"
...
"comments" varchar(200),
"shape_leng" numeric,
"shape_area" numeric);
SELECT AddGeometryColumn('','padus_1_1_cbi_edition','the_geom','-1','MULTIPOLYGON',2);
COMMIT;
关于这可能意味着什么以及如何解决问题的任何想法?
答案 0 :(得分:4)
因此,事实证明,仅仅在一台机器上安装PostGIS是不够的。
最初,我在Ubuntu 10.10上选择了sudo apt-get install postgresql postgis
。这给我留下了PostGRE 8.4的工作版本,但没有PostGIS的迹象。
因此,我尝试了sudo apt-get install postgresql-8.4-postgis
。
但是一个人的工作并没有结束!您需要设置PostGIS数据库。
This网站提供了有关此操作和之后使用数据库的说明。
答案 1 :(得分:1)
听起来好像数据库需要在空间上启用。抛出错误的原因是缺少功能。这个resource有一个快速简单的答案和解决方案。
答案 2 :(得分:0)
此错误表示无法识别该功能(功能名称或参数类型不正确)
这是v7.2中的definitions for AddGeometryColumn
text AddGeometryColumn(varchar table_name, varchar column_name, integer srid, varchar type, integer dimension);
text AddGeometryColumn(varchar schema_name, varchar table_name, varchar column_name, integer srid, varchar type, integer dimension);
text AddGeometryColumn(varchar catalog_name, varchar schema_name, varchar table_name, varchar column_name, integer srid, varchar type, integer dimension);
在我看来,你正在尝试使用第二个定义,尝试将其更改为使用第一个定义(无模式)并尝试取消引用srid(-1),因为它应该作为整数传递。
你可能需要投射一切......
答案 3 :(得分:0)
谢谢atorres757!你的答案在几分钟内解决了我的问题我删除了我的数据库并创建了一个新数据库,并选择template_postgis作为我的模板。所有shapefile都使用我的python脚本导入正常:
表示iList中的lyr:
os.system(“shp2pgsql -c -s 4326 -k -I -W UTF-8”+ lyr [: - 4] +“”+ lyr [: - 4] +“| psql -d AWM -p 5432 -U postgres“)