利用python的geopandas实现geojson数据的可视化(含geopandas安装和问题解决方式)

一、什么是geojson?

GeoJSON是一种对各种地理数据结构进行编码的格式,基于Javascript对象表示法的地理空间信息数据交换格式。GeoJSON支持点、线、面、多点、多线、多面和几何集合等几何类型。GeoJSON里的特征包含一个几何对象和其他属性,特征集合表示一系列特征。本质上,geojson还是json,是一个字符串数据格式。像下面这样:

{ "type": "Polygon",
  "coordinates": [
    [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ]
    ]
 }

这是一个面,能看出来吧?大家也可以去看看geojson是怎么描述点、多点、线等几何类型的。【geojson介绍】
相对于shapefile文件,这类数据格式的好处是带宽占用小,便于传输,非常灵活,所以很受欢迎。
接触gis的朋友应该对shapefile这类格式不陌生,但是geojson就不是很熟悉了。
如果你才刚遇到这类数据格式,对它一窍不通,也不必太过于把它当回事!慢慢学习就明白了。
geojson和shapefile都是编码地理空间数据的一种数据格式,如果你大致能理解.json、.shp、.tiff、.png、.jpg等格式,其实没什么不一样,它们只不过都用于编码数据而已,简而言之就是规范标准。

二、什么是geopandas?

如果大家知道pandas,就不难理解geopandas了。它的作用是简化python的地理空间数据处理,扩展pandas允许对几何类型进行空间操作。geopandas结合了pandas和Shapely的能力,提供了pandas的地理空间操作和多个几何图形的高级界面。先有一个大致理解,稍后我会给出具体范例。

三、安装geopandas

这一步是这篇文章的重点,因为python太过于小巧和简单易学,它的难点就在于”第三方库的安装“。到底有多难,装过就知道了。接下来我会介绍一下,我遇到的一些坑。
首先,geopandas是十几个库文件的集合,在安装之前,还需要安装4个必要的依赖库。分别是:shapely、pyproj、gdal、fiona,按顺序安装。直接pip很难成功,选择离线安装。
找到这4个库的下载地址:地址

看下面这张图,你得知道你的python的版本号(python2.7、python3.5、python3.7等)和系统架构(32位或64位)才能选择。切记严格按照python的版本号和系统架构选择,不然很难安装成功。
利用python的geopandas实现geojson数据的可视化(含geopandas安装和问题解决方式)_第1张图片
示例:利用python的geopandas实现geojson数据的可视化(含geopandas安装和问题解决方式)_第2张图片
然后打开cmd,输入:

pip install C:\Users\Administrator\Downloads\Shapely-1.6.4.post2-cp35-cp35m-win_amd64.whl
pip install C:\Users\Administrator\Downloads\pyproj-2.4.2.post1-cp35-cp35m-win_amd64.whl
pip install C:\Users\Administrator\Downloads\GDAL-3.0.4-cp35-cp35m-win_amd64.whl
pip install C:\Users\Administrator\Downloads\Fiona-1.8.13-cp35-cp35m-win_amd64.whl
#这个地址不是输入的,直接把文件拖到这个位置就出来了

接下来,安装geopandas,打开cmd,输入:

pip install geopandas

问题1:

国外网站下载速度非常慢,只有几k或十几k的速度,下载中断后还需要重新下载,这个问题可以借助百度网盘解决,具体操作就是:把下载地址复制下来,先离线到百度网盘,再从百度网盘下载,无会员可达到100多k的速度哦!如下图所示:利用python的geopandas实现geojson数据的可视化(含geopandas安装和问题解决方式)_第3张图片

问题2

前面提过这4个库的安装顺序为:shapely、pyproj、gdal、fiona,因为fiona依赖gdal,但是在安装gdal时,还是要下载很多依赖库,以至于国外网站下载网速太慢,直接出现Read timed out的情况。这时你可以用设置timeout的方式防止中断。

pip --default-timeout=100 install C:\Users\Administrator\Downloads\GDAL-3.0.4-cp35-cp35m-win_amd64.whl

问题3

在4个库安装完成之后,就需要安装geopandas了,同样会遇到问题2的情况,这时设置timeout也不管用了。我们可以引用国内源,例如:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple geopandas

很显然,问题2也可以用这种方式解决。

问题4

这个问题应该不是很普遍,具体返回为:“Command “python setup.py egg_info” failed with error code 1 in C:\Users\ADMINI~1”。解决方式为:

python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade --force pip
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple setuptools==33.1.1
#这里之所以都用到了清华镜像源,是因为这样做很有效率。

基本上,现在你应该能成功安装geopandas了,如果还是不能成功安装,请后台留言。

四、利用geopandas实现geojson数据的可视化

geopandas的地理空间数据的可视化可以画出很漂亮的地图或其他图件,用于展示或分析。

其实很简单,我们可以去这个地址下一个geojson数据,然后用python实现可视化,具体代码如下:

# -*- coding: utf-8 -*-
import geopandas
from shapely import geometry
import matplotlib.pyplot as plt

#保存在本地的geoJson数据
data = geopandas.read_file('E:\\python\\全国.json')#修改一下路径

cq = geopandas.GeoSeries([geometry.Point([116.0, 39.0])],crs='EPSG:4326')#默认wgs1984坐标系
#生成图表
fig, ax = plt.subplots()
data.to_crs(crs='EPSG:4524').plot(ax=ax, color="#4C92C3",alpha=0.8)
cq.to_crs(crs='EPSG:4524').plot(ax=ax, color='orange', markersize=100, marker='*')
plt.xticks(rotation=20)
plt.savefig("E:\\python\\图片数据\\MapDisplayAndprojection.png")#修改一下路径
plt.show()

如下图:利用python的geopandas实现geojson数据的可视化(含geopandas安装和问题解决方式)_第4张图片

五、后记

本文主要想跟大家交流一下geopandas的安装,至于geojson数据可视化的内容会比较少。这个可视化的内容也只是geopandas的一个小的应用,我们可以用这个工具画出很多很漂亮的地图,用于展示或者其它用途。接下来会有很多应用实例与大家交流和分享。

你可能感兴趣的:(python,sublime,text,json,python,几何学)