查看原文
其他

「GIS教程」利用Python获取全国GeoJSON数据并预览转换成shp格式文件

麻辣GIS 麻辣GIS 2022-07-17

文 / fungis

一个热带生活、乐于分享、努力搬砖的giser


前段时间看到下载全国的GeoJSON格式数据(精确到县级)的文章,吸引了我的注意,点进去的确干货满满,可以下载到全国GeoJSON格式数据。我就在在想能不能不用gis桌面软件,把GeoJSON数据直接转换为shapefile。首先我想到了用js,以前也做过类似的demo,但是这货不太给力,弃了。然后就想到了Python,了解一番后发现了geopandas库。







GeoPandas


GeoPandas是一个开源项目,Pandas是Python的一个结构化数据分析的利器,GeoPandas扩展了pandas使用的数据类型,允许对几何类型进行空间操作,其DataFrame结构相当于GIS数据中的一张属性表,使得可以直接操作矢量数据属性表,其目标是使得在python中操作地理数据更方便。下面是具体步骤:








安装安装 GeoPandas库


我是利用Anaconda3集成环境,所以就直接在cmd命令窗口执行conda install -c conda-forge geopandas。这句话会下载geopandas依赖的一些库,安装时间较长耐心等待就好。 ( 可以从清华大学镜像下载Miniconda。地址是 https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/),其他方式都比较复杂一点,网上也很全面,可以自行百度下载,不在细说。








GeoJSON基础数据获取


将阿里云上GeoJSON的数据利用Python保存到本地磁盘上。详细代码请点击底部的「阅读原文」查看。








GeoJSON数据展示


利用GeoPandas读取GeoJSON数据,并利用matplotlib展示出来。


代码如下:


"""@File : MapDisplay.py@Author : fungis@163.com@Time : 2020/02/26 15:41@notice : 展示geojson生成的数据,并进行投影"""
import geopandasfrom shapely import geometryimport matplotlib.pyplot as plt

data1 = geopandas.read_file('./data/河南.json')data2 = geopandas.read_file('./data/江苏.json')data3 = geopandas.read_file('./data/山东.json')data4 = geopandas.read_file('./data/安徽.json')
fig, ax = plt.subplots()data1.plot(ax=ax, color="#FDECD2",alpha=1)data2.plot(ax=ax, color="#FADCE8",alpha=0.8)data3.plot(ax=ax, color="#DFE2F3",alpha=0.9)data4.plot(ax=ax, color="#E0ECDF",alpha=0.7)
ax = geopandas.GeoSeries([geometry.box(minx=115, maxx=118, miny=34, maxy=36) .boundary]).plot(ax=ax, color='red')plt.savefig("./images/MapDisplayMoreProvince.png")plt.show()

效果如图:








保存 GeoJSON数据为shapefile到本地


最后就是利用GeoPandas进行数据转换了,代码如下:


"""@File : MapDisplay.py@Author : fungis@163.com@Time : 2020/02/26 15:41@notice : 将json生成的数据保存到本地"""
import geopandasimport matplotlib.pyplot as plt

def saveShapefile(file_path, output_shapefile_name): try: data = geopandas.read_file('./data/' + str(file_path) + '.json') ax = data.plot() plt.show() localPath = 'output/' + str(output_shapefile_name) data.to_file(localPath, driver='ESRI Shapefile', encoding='utf-8') print("--保存成功,文件存放位置:"+localPath) except Exception as ex: print("--------JSON文件不存在,请检查后重试!----")        pass
saveShapefile('河南', '河岸省矢量1')
效果如图:







全部代码下载


详细代码请点击底部的「阅读原文」查看下载。








结语


当然geopandas还可以干更多事,比如说读取本地shapefile文件、处理栅格图像、它还自带世界地区底图、世界主要城市底图,可以分解到各个国家进行制图,还可以连接excel、csv文件等进行制图,生成图例与指北针等等。更多精彩,还请大家自己实践。







扩展阅读


「寒假充电」那些有趣的GIS记录片

「GIS数据」DataV.GeoAtlas 全国GeoJSON数据(县级)打包下载

「教程」使用 pyecharts 绘制疫情地图

「地图故事」Google 地图上的那些巨幅标语

使用Python抓取2019-nCov疫情数据(附数据下载)

一个小型GIS项目的技术选型

九、十、十一

「教程」使用ArcMap查找相邻县的方法

推荐一个激光雷达科普视频(林业调查篇)

「教程」怎么下载带有审图号的地图数据

「图解」SuperMap iServer安装过程详解

「教程」使用 ArcGIS Pro 绘制美丽星空

「教程」ArcMap根据两个属性信息分别确定符号大小和颜色

「地图故事」由中国地名构成的壮美地图

「地图故事」中国县级以上行政区划地名中,哪些字是最常见的?

「图解」ArcGIS 10.6 for Desktop 安装教程(附下载地址)

「图解」ArcGIS 10.4.1 Desktop 完整安装教程(含win7/8/10 32/64位+下载地址+亲测可用)

「解惑」安装ArcGIS License Manager 服务无法启动的解决方案汇总

「分享」 王志强:ArcGIS 10.2操作入门视频教程汇总

「技巧」听说你的ArcGIS卸载不了?

「资源」分享天地图风格ArcGIS符号库

「视频」ArcGIS 10.5安装视频教程

「干货」ArcGIS实践教程汇总

「分享」小小孔夫子:ArcGIS操作实例视频教程38讲全集

「技巧」重装ArcGIS的注意事项

「教程」使用ArcGIS(ArcMap)进行简单的缓冲区分析

「视频 」ArcGIS API for JavaScript开发入门教程

「视频」ArcGIS 10.6 for Desktop 安装视频教程

「资源」GitHub上几个有用的高校学习资源

「勘误」地图里的那些不可忽视的问题

「教程」行政边界矢量数据的获取——以山西省为例

「教程」遥感图像预处理之辐射定标

「教程」使用百度地图API来制作个性化地图

「福利」2019年Esri用户大会全套资源下载

                                                                    

投稿

扫码加小编

一起"稿"GIS


END



关注 麻辣GIS

291616564(QQ群一)

166408035(QQ群二)

627853279(QQ群三)
436386604(QQ群四)
606176554(QQ群五)
946178380(QQ群六)
861271808(QQ群七)

http://malagis.com


长按识别二维码关注我们

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存