zoukankan      html  css  js  c++  java
  • shp2pgsql向postgresql导入shape数据

    1. 准备好Shape文件(不仅仅是.shp文悠扬,还要有其他相关数据文件,包括.shx、.prj、.dbf文件)。

    2. 使用命令将Shape数据转换为*.sql文件

    shp2pgsql -s 3857 -c -W "GBK" CLLX.shp>CLLX.sql

     -s 代表指定数据的SRID为3857

     -c 代表数据将新建一个表,这里可能的选项是 -d 删除旧的表,重新建表并插入数据; -a 向现有表中追加数据; -p 仅创建表结构,不添加数据,这四个参数是互斥的。

     -W Shape文件中属性的字符集,通常Postgresql的字符集是UTF-8,有时候可能Shape数据中的字符集是其他,就可能报“Unable to convert data value to UTF-8 (iconv reports "无效或不完整的多字节字符或宽字符"). Current encoding is "UTF-8". Try "LATIN1" (Western European)”错误,这时候指定正确的字符集即可解决方问题。

    3.建立空间数据库,并导入数据

    3.1 登录postgres用户,建立空的数据库,指定数据的所有者是gisdb用户(或者你数据库内的任意现有用户)

    CREATE DATABASE shp2pgsqldemo WITH OWNER=gisdb;

    3.2 使用 c shp2pgsqldemo; 切换到shp2pgsqldemo数据库,并安装PostGIS相关扩展(安装PostGIS请参见这里)

    c shp2pgsqldemo;
    
    CREATE EXTENSION postgis;
    
    CREATE EXTENSION postgis_topology;

    3.3 向数据库导入使用Shape数据生成的.sql文件

    psql -d shp2pgsqldemo -U gisdb -f /tmp/shp/CLLX.sql -W

    4. 验证数据

    5.直接将Shape数据导入到数据表 

    shp2pgsql -s 3857 -c -W "GBK" /tmp/shp/CLLX.shp public.CLLX2 | psql -d shp2pgsqldemo -U gisdb -W

    这里值的一提的是,刚才我们已经建了一个cllx表了,如果再导入可以使用 -d 参数删了重建,我这里为了演示功能,使用 <SCHEMA>.<DBTABLE> 数据重新建了一个表 CLLX2 ,如下图红框中所示。另外在导入过程中需要输入数据库用户的密码,在红色箭头所示的地方,命令执行会中断,等待输入密码,只需要输入密码后回车即可向下执行。

    5.1验证导入结果,发现有新建的cllx2表

    共18条数据

  • 相关阅读:
    Visual Studio 2005 Starter Kits
    怎样去做才是朋友?
    C#读写日志文本文件
    [文摘20080707]马云追加投资20亿 淘宝首定10年超沃尔玛目标
    [转]在WinForm应用程序中实现自动升级
    [转]官方Flash CS3简体中文帮助文档下载,AS3.0简体中文帮助文档下载
    [引]MySQL INNODB类型表的外键关联设置
    [转]winfrom让弹出的MessageBox在指定时间内自动销毁
    生活开心一笑 之 "我家半"与"QQ病毒"
    [English20080721]疯狂英语365句
  • 原文地址:https://www.cnblogs.com/think8848/p/6929351.html
Copyright © 2011-2022 走看看