暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostGIS:使用shp2pgsql对shapefile入库

若海软件科技订阅号 2020-09-22
1280

shp2pgsql数据加载器转换ESRI的shapefile文件为SQL并插入到一个PostGIS/PostgreSQL数据库。加载器有几种操作模式,通过命令行标志区分.

除了shp2pgsql命令行加载器之外,还可以通过shp2pgsql-gui图形界面作为命令行加载器,对于一次性的非脚本加载非常好用,或者如果你是PostGIS新手,可以配置为一个插件(pgAdminIII)。

命令参数:

(c|a|d|p)这些是互斥的选项:

- c

创建一个新表并从shapefile
填充它。这是默认模式。

- a

将形状文件中的数据追加到数据库表中。注意,要使用此选项加载多个文件,这些文件必须具有相同的属性和相同的数据类型。

- d

在使用形状文件中的数据创建新表之前,删除数据库表。

- p

只生成表创建SQL代码,而不添加任何实际数据。如果需要将表创建和数据加载步骤完全分离,可以使用此方法。

- d

对输出数据使用PostgreSQL“转储”格式。它可以和-a, -c, -d结合。它的加载速度比默认的“insert
”SQL格式快得多。对非常大的数据集使用此方法。

- s [< FROM_SRID >:] < SRID >

使用指定的SRID创建并填充几何表。可选地指定输入shapefile使用给定的FROM_SRID,在这种情况下,几何图形将被重新投影到目标SRID。

- k

保持标识符的大小写(列、模式和属性)。注意,Shapefile中的属性都是大写的。

- i

将所有整数强制为标准的32位整数,不要创建64位bigint,即使DBF头签名似乎可以这样做。

- I

在geometry列上创建GiST索引。

- m

-m a_file_name
指定一个文件,其中包含一组(长)列名到10个字符的DBF列名的映射。文件的内容是由两个名字组成的一行或多行,用空格隔开,没有首行或首行空格。例如:

COLUMNNAME DBFFIELD1

AVERYLONGCOLUMNNAME DBFFIELD2

- S

生成简单的几何图形而不是多个几何图形。只有当所有的几何图形实际上是单一的(即一个单壳的多多边形,或一个单顶点的多点)才能成功。

- t <维度>

强制输出几何图形具有指定的维数。使用以下字符串表示维数:2D, 3DZ, 3DM, 4D。

如果输入的维数少于指定的维数,则输出将用0填充这些维数。如果输入有更多指定的维度,不需要的维度将被删除。

- w

输出WKT格式,而不是WKB。注意,这可能会由于精度的损失而引入坐标偏移。

- e

单独执行每条语句,而不使用事务。这允许在存在一些生成错误的错误几何图形时加载大多数好的数据。注意,这不能与-D标志一起使用,因为“dump”格式总是使用事务。

- W <编码>

指定输入数据(dbf文件)的编码。使用时,dbf的所有属性都从指定的编码转换为UTF8。生成的SQL输出将包含一个SET CLIENT_ENCODING to UTF8
命令,以便后端能够将UTF8重新转换为数据库内部配置使用的任何编码。

- N <策略>

NULL几何图形处理策略(插入*、跳过、终止)

- n

只导入DBF文件。如果你的数据没有相应的shapefile,它会自动切换到这个模式,只加载dbf。因此,只有当您有一个完整的shapefile集,并且您只需要属性数据而不需要几何图形时,才需要设置这个标志。

- G

WGS84 long lat (SRID=4326)
中使用地理类型代替几何(需要lon/lat
数据)

- T <表>

指定新表的表空间。索引仍然使用默认表空间,除非也使用-X参数。PostgreSQL文档对何时使用自定义表空间有很好的描述。

- X <表>

为新表的索引指定表空间。这适用于主键索引,如果还使用i,则适用于GIST空间索引。

一个使用加载器创建输入文件并上传它的示例会话可能是这样的:

# shp2pgsql -c -D -s 4269 -i -I shaperoads.shp myschema.roadstable > roads.sql
# psql -d roadsdb -f roads.sql

转换和上传可以用UNIX管道一步完成:

shp2pgsql shaperoads.shp myschema.roadstable | psql -d roadsdb

对于GIS数据入库,除了使用上述方法,对于一次性入库,还可以通过QGIS进行操作,相关操作请查看本公众号QGIS相关文章。


文章转载自若海软件科技订阅号,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论