众所周知,postgis是一个开源的高性能空间数据库,其基于postgresql数据库进行扩展,完整支持OGC标准,同时提供了空间管理及空间分析等丰富的函数支撑。

当你拿到矢量数据后,为了让大家进行共享数据,而不是依赖于读取文件这种方式进行数据读取,可以采用数据库这种方式进行分享。同时可以基于标准sql进行数据操作,提高数据处理与分析效率。

本文将以矢量数据为例,分享三种常见的矢量数据导入到postgis数据库的方法。同时在pgadmin中进行空间数据的可视化。

一、系统操作环境说明:

1、操作系统:windows7 专业版 64位

2、gdal 3.4

3、postgis 12

4、postgresql 12

二、需要提前配置好的环境

1、在postgresql中创建一个数据库,安装后执行以下postgis扩展。

CREATE EXTENSION postgis;

2、执行以下语句,如果没有报错,说明扩展安装成功

SELECT ST_SetSRID(ST_Point(-87.71,43.741),4326),ST_GeomFromText('POINT(-87.71 43.741)',4326)

三、使用postgis shapefile 导入工具

1、打开postgis shapefile导入工具,点击开始,找到postgis工具

image.png

2、打开后看到以下页面

image.png

3、配置postgis连接

image.png

4、选择需要导入的shapefile文件。

image.png

5、选择文件后,点击import将矢量数据导入到postgis中

image.png

四、使用gdal的ogr2ogr命令进行导入

1、在gdal的bin\gdal\apps目录下,可以看到有很多gdal提供的命令行函数,通过调用这些命令行函数可以完成许多空间数据处理,分析。其中ogr2ogr就是一个矢量数据处理命令。

2、ogr2ogr函数说明

image.png

这里简单说几个比较常用的参数:

# -loc LAUNDER=NO -- 为了保持数据名,字段的是大小写区分的,不然会默认为小写字母。lco GEOMETRY_NAME=geom 将空间字段重命名。-nln biz_china3 表示对图层导入后表名进行修改。

参考命令如下:

ogr2ogr.exe -f PostgreSQL PG:"host=localhost port=5432 user=postgres password=postgres dbname=yelang_test" F:/vector_data/other/gdal_demo_data/china-data/china.gdb -overwrite -progress --config PG_USE_COPY YES -lco LAUNDER=YES -lco GEOMETRY_NAME=geom -nln biz_china3

五、使用geotools结合gdal进行更多自定义处理

关于使用geotools进行矢量数据导入的例子,可以参阅之前的博客, 基于GeoTools的GeoJson导入到PostGis实战 以及 干货!使用Geotools解析shap数据实例

六、使用pgadmin查看导入的空间数据

image.png

image.png

总结:本文重点介绍在postgis中,三种矢量数据的导入管理方式,分别是使用postgis导入工具、gdal的ogr2ogr函数以及编程式。其中,编程式的灵活度最高,还可以自定义处理逻辑,但对研发人员要求较高。其它两种使用成本低,开箱即用。各位可以根据自身业务需要进行选型采用。采用编程式导入还有一个好处就是可以进行投影和坐标转换,而前两者都会或多或少存在一些问题。希望文章对您有帮助,欢迎指正交流。



Pandas+ SLS SQL:融合灵活性和高性能的数据透视
Pandas是一个十分强大的python数据分析工具,也是各种数据建模的标准工具。Pandas擅长处理数字型数据和时间序列数据。Pandas的第一大优势在于,封装了一些复杂的代码实现过程,只需要调用接口就行了,避免了编写大量的代码。Pandas的第二大优势在于灵活性,可以实现自动化批量化处理复杂的逻辑,这些工作是Excel等工具是无法完成的。因而Pandas介于Excel和自主编写程序之间,兼具灵活性和简洁性的数据分析工具。
在SmartBI中使用ClickHouse数据源进行透视分析
在使用SmartBI进行数据分析时,通过MPP高速缓存库可以大大加快计算速度,提高工作效率。我司SmartBI MPP高速缓存库的底层技术为ClickHouse。ClickHouse是一个面向联机分析处理(OLAP)的开源的面向列式存储的数据库管理系统,与Hadoop, Spark相比,ClickHouse很轻量级,由俄罗斯第一大搜索引擎Yandex于2016年6月发布, 开发语言为C++。
阿里云时空数据库实战(一):数据入库与导出
5月5号,阿里云发布了最新的时空数据库,感兴趣的同学可以点击下面连接登陆阿里云官网进行免费试用:https://www.aliyun.com/product/hitsdb_spatialpre 阿里云时空数据库能够存储、管理包括时间序列以及空间地理位置相关的数据。
11717 一 线性参考干啥用的   如果直接写个“高大上”的定义结果往往是一脸懵逼的,也不知道为什么要定义这么一个概念。其实线性参考技术在我们生活中是非常常见的,比如打开高德,百度地图的App,查看实时路况,道路被不同路况的颜色动态分段显示了;高速中发生交通事故,电视广播中常常对地点描述为“距离xx高速入口xx公里处”,地图是能非常精确的定位到这个地点的。 批量将本地gis数据导入postgis数据库
以前在处理gis数据的时候,都是直接导入本地shp素材、本地geojson素材,本地topojson素材,自从接触postgis数据之后,深感使用规范的存储系统来统一管理gis数据的好处,特别是数据量大了之后,优势便更加明显,你可以选择将很多需要做空间计算的步骤转移到Postgis数据库内进行计算,要知道Postgis提供的空间计算能力与R和Python这种应用导向的工具相比,优势要大得多。