PostGIS Bundle 导入 Shp 到 PostGIS 空间数据库

关注我,带你一起学GIS ^

前言

PostGIS Bundle提供了高效的工具,可将Shapefile (Shp)空间数据快速导入 PostgreSQL/PostGIS 空间数据库,支持几何对象、属性数据及空间参考的完整迁移。无论是单文件导入还是批量处理,均可通过命令行或图形化工具轻松完成。

1. PostGIS Bundle for PostgreSQL简介

PostGIS Bundle for PostgreSQL 是一套专为 PostgreSQL 数据库设计的空间数据库扩展包,它显著增强了 PostgreSQL 在地理空间数据处理方面的能力。PostGIS 支持多种空间数据类型,并且具有强大的空间索引能力和丰富的空间函数,在空间数据处理和分析方面具有强劲的优势,是为空间数据库的首选。

2. 创建空间拓展

安装完成PostgreSQL数据库和PostGIS插件之后,新建一个数据库进行测试,例子中我创建的数据库名称为geodata。之后需要启用空间拓展,也就是在数据库查询中运行以下语句。只有成功创建空间拓展,才能存储和管理空间数据。对于一些应用来说,启用postgispostgis_topology就已经足够了。

— pg 空间拓展

CREATE EXTENSION postgis;

— pg 拓扑工具

CREATE EXTENSION postgis_topology;

— pg 路由

CREATE EXTENSION pgrouting;

CREATE EXTENSION fuzzystrmatch;

CREATE EXTENSION postgis_tiger_geocoder;

CREATE EXTENSION address_standardizer;

成功创建空间拓展后,刷新数据库,可以看到在数据库中多了一个表spatial_ref_sys,表结构内容如下,可以看出这是一个有关坐标系统定义的表。

3. 导入Shp数据

打开 PostGIS 插件,点击View connection details,填写数据库连接信息。用户名为postgres,填写密码、主机地址、端口号以及创建用于导入Shp的数据库,然后点击OK

如果在Log对话框中输出以下信息,则说明数据库连接成功。点击Add File按钮,选择要导入数据库的Shp文件,点击Open按钮完成数据选择。

Import List选项中可以对一些参数进行调整。如下图中的Table表示导入数据库的表名,默认为数据文件名称,若有其他名称,可点击下方单元格进行修改;Geo Column表示导入数据库后空间字段的名称,默认为geom,与表名一样,若想使用其他字段,可点击下方单元格进行修改;点击SRID列可以填写坐标参考(如4326表示WGS84);点击Rm将会移除文件。

在导入数据之前,还可以进行参数设置,点击Options按钮,打开导入选项对话框如下,在下图红色方框中填写属性表字符集,若字符集不匹配,则数据会导入失败。

以上参数设置完成,点击Import按钮导入数据即可。下图为Shp数据导入成功之后的表以及数据结构,其中空间数据存储在几何字段geom中,并且以二进制数据进行存储。

4. 遇到的问题及解决办法

问题Shp数据导入失败。原因及解决方案:

  • 文件权限问题:缺少读取权限,修改程序读取.dbf文件的权限。
  • 文件路径问题:路径中包含中文字符,这个懂得都懂,最好不要包含中文路径。
  • 编码问题:在导入选项中将字符集修改为Shp数据字符集。

OpenLayers示例数据下载,请在公众号后台回复:ol数据

全国信息化工程师-GIS 应用水平考试资料,请在公众号后台回复:GIS考试

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

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

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

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

 

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部