用shp2pgsql把shp文件导入到数据库

来源:互联网 发布:淘宝回收移动充值卡 编辑:程序博客网 时间:2024/06/07 13:56

把shp文件导入空间数据库中,用postgresql图形化界面pgAdmin中的插件可以很方便的导入,但有时候会提示dbf文件无法打开或导入错误(有的是生成SQL语句过程中科学计数法问题造成),这时候我们用PostGis自带的shp2pgsql先生成sql语句文件修改下就可能成功导入数据库。下面是shp2pgsql的命令语法参数及实例:
PostGis版本: 1.5
用法: shp2pgsql [<options>] <shapefile> [<schema>.]<table> >文件.sql
OPTIONS:
●-s <srid>
 设置srid,缺省为-1
●(-d|a|c|p)互斥选项:
     -d  重新建立表,并插入数据。
     -a  在同一个表中增加数据
     -c  建立新表,并插入数据。(缺省)
     -p  只创建表
●-g <geocolumn> 指定要创建的表的空间字段名称(在追加数据时有用)
●-D  使用dump方式,缺省是生成sql
●-G  Use geography type (requires lon/lat data).
●-k  保持PostgreSQL标识符方式
●-i  使用int4类型dbf文件里的integer类型
●-I  在空间字段上建立索引
●-S  Generate simple geometries instead of MULTI geometries.
●-W <encoding> shape文件属性列的字符格式。缺省是ascII
●-N <policy> 指定geometries为空时的操作(insert,skip,abort)
●-n  只导入dbf文件
●-?  显示帮助

实例:把D盘下city.shp文件导入mygis数据库city表中
1、C:\Program Files\PostgreSQL\9.0\bin> shp2pgsql -g the_geom -W GBK d:\city.shp city>d:\city.sql
   Shapefile type: Point
   Postgis type: POINT[2]
2、C:\Program Files\PostgreSQL\9.0\bin>psql -U postgres -h localhost -d mygis -p 5432 -f D:\city.sql

   postgis=# \i  d:/city.sql  (注:不要写成d:\city.sql否则提示:d:: Permission denied)

3、C:\Program Files\PostgreSQL\9.0\bin>shp2pgsql -g the_geom -W GBK d:\city\res2_4m.shp city|psql -U postgres -h localhost -p 5432 -d mygis

注:国家基础地理中心下载的县级行政区将数据转换为sql的时候,导入数据库时会出错SQL语句插入错误,原因是数据中出现了很多科学计数法表示的数据,而postgis的insert语句是不能解析这种格式的数据的:'9.5043288e-005000'。
我们需要把这种格式转换为:'9.5043288e-5'::numeric这种格式就可以了,这个工作可以由UltraEdit的正则表达式来完成。

原创粉丝点击