20210531踩坑记录:geopandas安装和geojson可视化

geopandas的安装是最最最麻烦的了,有很多依赖库,然后版本还很难协调……

我的环境是python3.7,最终成功的效果大概经历了这些步骤:

conda install -c conda-forge geopandas 

这个是官网的安装方法之一,会把附带的依赖库一起安装上,如果用pip还需要提前安装GDAL、pyproj这些,而且版本很难协调。然而仍然因为pyproj报错。

这个时候如果用conda install pyproj会安装成1.9.5.1版本,但事实上需要3.0.1版本才满足需求(要不然import geopandas)会报错。

尝试了,如果用pip安装会没有效果,仍然报错,用conda install pyproj==3.0.1会告诉我找不到这个包。最后成功的是用下面这个命令,会自动检查修正环境:

conda install -c conda-forge pyproj==3.0.1

安装时间是挺长的,不过成功了。

因为这个pyproj的问题,还报过第三个错说找不到proj.db。这个网上有不少方法,基本说的都是修改系统变量和添加代码,我是两样都加了,然后重启之后成了。代码如下,也就是这个文件夹里要有这个文件。

import os
os.environ['PROJ_LIB'] =r'D:\anaconda\envs\kkb3.7\Lib\site-packages\pyproj\proj_dir\share\proj'

这中间,因为安装contextily还返工过一次,但大体上版本的搭配是这样的啦,

# Name                    Version                   Build  Channel
geopandas                 0.6.3                      py_0    conda-forge
pyproj                    3.1.0                    pypi_0    pypi

gdal                      3.1.4           py37h91875a4_13    conda-forge
libgdal                   3.1.4               hade8cfc_13    conda-forge

contextily                1.1.0              pyhd8ed1ab_0    conda-forge

 

之后,运行这段代码成功了!也就是读取geojson文件,并且显示在在线地图上。

import geopandas as gpd
import matplotlib.pyplot as plt
import contextily as ctx
import os

# 环境配置
os.environ['PROJ_LIB'] =r'D:\anaconda\envs\kkb3.7\Lib\site-packages\pyproj\proj_dir\share\proj'
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei','Microsoft Jhenghei','Microsoft YaHei','FangSong']  # 汉字字体
mpl.rcParams['font.size'] = 12  # 字体大小
mpl.rcParams['axes.unicode_minus'] = False  # 正常显示负号


# 读取保存在本地的geoJson数据
data = gpd.read_file('F:/砖/HK地理空间竞赛/数据库_除三维模型/各检测站点空气质数指数/站点location/站点location.geojson')#修改一下路径
print(data['空氣質素監測站類別'])

# 生成图表
fig, ax = plt.subplots(1,1,figsize = (15,7))

# 投影
proj = data.to_crs(crs='EPSG:3857')
proj.plot(ax=ax,alpha=0.8,column='空氣質素監測站類別', k=2,legend =True)

# 添加文字标注
data['x']=proj['geometry'].map(lambda x: x.x) # 注意这里的x和y是投影过的
data['y']=proj['geometry'].map(lambda x: x.y)
for x,y,label in zip(data['x'], data['y'],data['設施名稱']):
    plt.text(x,y,label, fontsize=12, color='black')


# 添加在线地图
ctx.add_basemap(ax,source='https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png',zoom=10)
plt.xticks(rotation=20)

# 保存图片
plt.savefig("F:/砖/HK地理空间竞赛/数据库_除三维模型/各检测站点空气质数指数/站点location/MapDisplayAndprojection.png")#修改一下路径

# 展示图片
plt.show()

图大概长这样,上面的点是解析后的geojson。

 

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值