全球行政区搜索

实现方案

从第三方网站下载到全球的行政区数据导入到PostgreSQL数据库,PostgreSQL数据库具有postgis扩展可以对空间数据进行管理,还有空间函数方便查询处理空间数据

一、数据下载

GADM是一个免费的地图数据集,提供了全球行政区域的GeoJSON数据,官网https://gadm.org/index.html

下载数据
步骤一

选择世界范围的行政区数据
下载世界范围的行政区数据

选择下载数据这里有两种结构的数据,选择最后面一种,这种结构的数据方便查询(之前踩过坑,选择的第一种,到最后根本不知道怎么写查询sql)
数据格式

二、安装PostgreSQL数据库,并添加postgis扩展

postgresql的postgis扩展是有着存储管理空间数据的能力的开源GIS数据库
这里就不介绍安装过程了,参考https://blog.csdn.net/weixin_43524214/article/details/131077910

三、数据导入

使用ogr2ogr工具将下载的gpkg格式的行政区数据导入到PostgreSQL

安装ogr2ogr工具(以Ubuntu为例)

sudo apt-get install gdal-bin

导入数据库

ogr2ogr -f "PostgreSQL" PG:"dbname=mydatabase user=myuser password=mypassword host=myhost" /path/to/gpkg/file.gpkg -nln mytable -nlt PROMOTE_TO_MULTI

将“mydatabase”替换为目标PostgreSQL数据库的名称,“myuser”和“mypassword”替换为数据库的用户名和密码,“myhost”替换为数据库所在的主机名或IP地址,“/path/to/gpkg/file.gpkg”替换为gpkg文件的路径和名称,“mytable”替换为要创建的新表的名称。

-nln选项指定导入的表名称,-nlt选项将创建的几何列转换为多重几何列,以便与PostGIS兼容。

四、数据查询

select ST_AsGeoJSON(ST_Simplify(geom,0.01)) from table_name

geom是存储几何对象的字段,table_name是表名
这里介绍下ST_AsGeoJSON和ST_Simplify这两个空间函数

  • ST_Simplify函数
    用于简化几何对象,减少其顶点数目并近似保留形状。它接受一个几何对象和一个容差值作为参数,并返回简化后的几何对象。(这个函数非常有用,在查询一些比较大的行政区的时候,查询会很慢,用这个函数简化后可以大大提升查询速度)

  • ST_AsGeoJSON
    用于将几何对象转换为 GeoJSON 格式的字符串表示。它接受一个几何对象作为参数,并返回对应的 GeoJSON 字符串。

数据导入到数据库后还会有行政区名称,级别,所属国家等字段,你可以根据这些字段结合自身需求去查询对应的数据,再把PostgreSQL当成数据源集成到自己的服务当中,这样就实现全球行政区搜索功能啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值