获取全球GeoJSON地理数据(到省市)
文章介绍了如何获取并转换全球地理数据为GeoJSON格式,用于地图可视化。通过从gadm.org下载GPKG格式的数据,并使用GDAL和GeoPandas工具将其转换为GeoJSON格式。文章还提供了简化数据的方法以减少文件大小。 2025-9-5 07:29:48 Author: www.freebuf.com(查看原文) 阅读量:6 收藏

freeBuf

主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

本文背景

一般地图可视化的功能可能只到国家地区的层级,github上有很多可以直接下载的GeoJSON地理数据,国内到县的GeoJSON地理数据也有。

但全球的GeoJSON地理数据到省市级别的数据博主在githuab没有找到直接可用的,可能是因为数据比较大,如果有相同业务需求的小伙伴,可以参考本文来获取GeoJSON数据。

数据库获取

https://gadm.org/download_world.html#(打不开的话是因为没科学上网dddd)

1757055858_68ba8b72c1f7012b56cca.png!small?1757055858796

下载单个数据库

1757055874_68ba8b8223f7894d52bca.png!small?1757055874047

下载下来是gpkg格式(GeoPackage),不是咱们经常使用的GeoJSON格式,下面来转换,博主比较常用python,熟悉其他语言的小伙伴可以拿代码去让AI转换一下。

下载GDAL

GDAL因为我用的是python3.11版本,所以是cp311,可以根据自己本地的python版本下载对应的版本。

pip install https://github.com/cgohlke/geospatial-wheels/releases/download/v2024.9.22/GDAL-3.9.2-cp311-cp311-win_amd64.whl
pip install geopandas

获取图层列表

GPKG是一种开源的地理数据库格式,基于SQLite实现,可以存储多种类型的地理数据。

from osgeo import ogr

gpkg_file = "gadm_410.gpkg"
ds = ogr.Open(gpkg_file)

if ds is None:
    print("无法打开 GPKG 文件")
else:
    print("图层列表:")
    for i in range(ds.GetLayerCount()):
        layer = ds.GetLayerByIndex(i)
        print(f"- {layer.GetName()}")

提取并转换地理数据

我这里是图层gadm_410,然后使用GeoPandas读取并将其转换为GeoJSON格式

import geopandas as gpd

# 读取GPKG文件中的指定图层
gdf = gpd.read_file("gadm_410.gpkg", layer="gadm_410")

# 查看数据结构
print(gdf.head())

gdf.to_file("global_admin_areas.geojson", driver="GeoJSON")

多等一会就成功生成了

数据处理

生成的GeoJSON字段值比较多,有些咱们不需要,可以现在处理,也可以拿到GeoJSON后处理

columns_to_keep = ['NAME_0', 'NAME_1', 'NAME_2', 'geometry']  # 国家、省、市名称和几何图形
gdf_simplified = gdf[columns_to_keep]

gdf_simplified['geometry'] = gdf_simplified['geometry'].simplify(0.01)
gdf_simplified.to_file("simplified_admin_areas.geojson", driver="GeoJSON")

文件大小会小很多

已在FreeBuf发表 0 篇文章

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/others-articles/447399.html
如有侵权请联系:admin#unsafe.sh