当前位置: 首页 > news >正文

shp2pgsql 导入 Shp 到 PostGIS 空间数据库

前言

shp2pgsqlPostGIS自带的命令行工具,用于将Shapefile文件声称SQL脚本导入到PostGIS空间数据库。

1. 安装 PostGIS

通过Application Stack Builder或者下载单独的PostGIS包进行安装。shp2pgsql则是与PostGIS工具集成在一起,无需单独下载。该命令行工具可以在安装路径下的bin目录中找到。

也可以打开shp2pgsql图形界面工具,也就是上一节中的PostGIS Bundle for PostgreSQL来导入Shp数据。

2. shp2pgsql 选项参数

基本语法:

shp2pgsql [OPTIONS] shapefile路径 [schema.]table > roads.sql(输出SQL路径)

shp2pgsql [OPTIONS] shapefile路径 [schema.]table

选项介绍:

选项名称

选项描述

选项示例

-c|-a|-d|-p

互斥选项,只能选择一个

  • -c:创建新表并从Shapefile填充它。这是默认模式
  • -a:将Shapefile中的数据追加到数据库表中。要主义的是使用此选项加载多个文件,这些文件必须具有相同的属性和相同的数据类型。
  • -d:在使用Shapefile中的数据创建新表之前,先删除数据库表。
  • -p:只生成表创建SQL代码,不添加任何实际数据。如果需要完全分离表创建和数据加载步骤,可以使用此方法。

shp2pgsql -c -D -s 4269 -i -I shaperoads.shp myschema.roadstable > roads.sql

-D

输出数据使用PostgreSQL“转储”格式。这可以与-a、-c-d组合使用。它的加载速度比默认的“插入”SQL格式快得多。将其用于非常大的数据集。

-s [<FROM_SRID>:]<SRID>

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

shp2pgsql -s 4326 C:countries.shp public.countriesSQL>C:countries.sql

-k

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

-i

将所有整数强制转换为标准的32位整数,即使DBF标头签名似乎保证了这一点,也不要创建64位大整数。

-I

在几何体列上创建GiST索引。

-m

-m a_file_name指定一个文件,其中包含一组(长)列名到10个字符的DBF列名的映射。文件的内容是一行或多行两个名称,用空格分隔,没有尾随或前导空格。

例如:

COLUMNNAME DBFFIELD1

AVERYLONGCOLUMNNAME DBFFIELD2

-S

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

-t <dimensionality>

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

如果输入的维度比指定的少,则输出将用零填充这些维度。如果输入具有指定的更多尺寸,则不需要的尺寸将被删除。

-w

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

-e

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

-W

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

shp2pgsql -s 4326 -I -W "UTF-8" C:countries.shp public.countriesSQL>C:countries.sql

-N <policy>

NULL几何处理策略(insert*,skip,abort

-n

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

-G

WGS84长纬度(SRID=4326)中使用地理类型而不是几何形状(需要经度/纬度数据)

-T <tablespace>

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

-X <tablespace>

为新表的索引指定表空间。这适用于主键索引,也适用于GIST空间索引if -I

-Z

使用此标志时,将阻止生成ANALYZE语句。如果没有-Z标志(默认行为),将生成ANALYZE语句。

-?

显示帮助

shp2pgsql -?

可以在命令行窗口中查看完整选项参数:![](https://i-blog.csdnimg.cn/img_convert/768b24d062237d63c0ce08b65619e46b.png)

3. shp2pgsql 使用示例

直接导入到数据库:

shp2pgsql -s 4326 -I -W "UTF-8" C:\Users\hasee\Desktop\conutries\countries.shp public.countries | psql -U postgres -d geodata

其中postgres数据库用户名,geodata为数据库名称。

通过SQL导入数据库:

shp2pgsql -s 4326 -I -W "UTF-8" C:\Users\hasee\Desktop\conutries\countries.shp public.countriesSQL>C:\Users\hasee\Desktop\conutries\countries.sql

数据库示例图片

OpenLayers示例数据下载,请回复关键字:ol数据

全国信息化工程师-GIS 应用水平考试资料,请回复关键字:GIS考试

GIS之路 已经接入了智能助手,欢迎大家前来提问。

欢迎访问我的博客网站-长谈GIShttp://shanhaitalk.com

都看到这了,不要忘记点赞、收藏 + 关注

本号不定时更新有关 GIS开发 相关内容,**欢迎关注 !

相关文章:

  • MVDR源码(可直接运行)
  • Jmeter(一) - 环境搭建
  • 小白的进阶之路系列之二----人工智能从初步到精通pytorch中分类神经网络问题详解
  • 3D几何建模引擎3D ACIS Modeler核心功能深度解读
  • 视觉语言模型之困:当否定词成为理解的“盲区”
  • 【AI 大模型】盘古大模型简介 ( 创建空间 | 体验模型 | 部署模型 )
  • AMO——下层RL与上层模仿相结合的自适应运动优化:让人形行走操作(loco-manipulation)兼顾可行性和动力学约束
  • ⭐️白嫖的阿里云认证⭐️ 第二弹【课时3:大模型辅助内容生产场景】for 「大模型Clouder认证:利用大模型提升内容生产能力」
  • 第3天-python流程控制实例
  • 保证数据库 + redis在读写分离场景中事务的一致性
  • 隐形安全感
  • 1.3 C++之变量与数据类型
  • 【算法-栈】深入栈模拟题:从题型特征到实现技巧
  • Https流式输出一次输出一大段,一卡一卡的-解决方案
  • Spark离线数据处理实例
  • 【QT】ModbusTCP读写寄存器类封装
  • List介绍
  • 绿色云计算:数字化转型与可持续发展的完美融合
  • 【Linux】第二十四章 管理网络安全
  • Django快速入门篇
  • 总数再更新!我国新增三项全球重要农业文化遗产
  • 墨西哥海军帆船纽约撞桥事故已致2人死亡19人受伤
  • 61岁云浮市律师协会副会长谭炳光因突发疾病逝世
  • 一条铺过11年时光的科学红毯,丈量上海科创的“长宽高”
  • 马上评|训斥打骂女儿致死,无暴力应是“管教”底线
  • 上海率先推进生物制品分段生产试点,这款国产1类创新药获批上市