^ 关注我,带你一起学GIS ^
前言
❝
PostGIS Bundle提供了高效的工具,可将Shapefile (Shp)空间数据快速导入 PostgreSQL/PostGIS 空间数据库,支持几何对象、属性数据及空间参考的完整迁移。无论是单文件导入还是批量处理,均可通过命令行或图形化工具轻松完成。
1. PostGIS Bundle for PostgreSQL简介
PostGIS Bundle for PostgreSQL 是一套专为 PostgreSQL 数据库设计的空间数据库扩展包,它显著增强了 PostgreSQL 在地理空间数据处理方面的能力。PostGIS 支持多种空间数据类型,并且具有强大的空间索引能力和丰富的空间函数,在空间数据处理和分析方面具有强劲的优势,是为空间数据库的首选。
2. 创建空间拓展
安装完成PostgreSQL
数据库和PostGIS
插件之后,新建一个数据库进行测试,例子中我创建的数据库名称为geodata
。之后需要启用空间拓展,也就是在数据库查询中运行以下语句。只有成功创建空间拓展,才能存储和管理空间数据。对于一些应用来说,启用postgis
和postgis_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之路公众号已经接入了智能助手,欢迎大家前来提问。
欢迎访问我的博客网站-长谈GIS:
http://shanhaitalk.com
都看到这了,不要忘记点赞、收藏+关注 哦!
本号不定时更新有关 GIS开发 相关内容,欢迎关注