首页 > 编程知识 正文

我要一张完美的地图,python地图上动态显示数据

时间:2023-05-06 06:11:04 阅读:166102 作者:4101

python用Basemap制作完美的中国地图摘要安装Basemap下载Basemap安装文件安装py proj base map base map helloword用Shapefile制作中国行政区域地图请使用pandas打印Shapefile地区的内容信息,参考气象观测网站的位置博文

摘要

本文主要想消除目前网络文献中为大家比较个人经验的问题。 其中,

如何安装Basemap组件如何使用Basemap定位比较优美的中国区域平面效果,如何使用shapefile文件绘制完整的中国官方地图——目前缺乏Basemap默认绘制的中国行政区域地图我主要是抱着扔球的心情,为网友准备的报名单的实际技巧,请谅解。

基本地图的安装在这里准备好了。 在windows平台上如何安装Basemap,虽然没有在Linux操作系统本身上进行尝试,但应该几乎是一样的。 首先,Basemap不在Anaconda和pip的仓库中,所以您必须自己下载对应的whl文件。

Basemap安装文件下载Basemap安装文件下载地址: https://www.lfd.UCI.edu/~ Goh lke/python libs/3358 www.Sina.com

下载时注意支持本机的Python版本就可以了。 例如,在我的电脑上是3.7的Python。 我使用的cp37-cp37m-win_amd64.whl安装Pyproj Basemap安装可以采用Pyproj和http://ww.Sina.Sina

pipinstallpyproj 1.9.6 CP 37c p 37 mwin _ amd64.whlpipinstallbasemap 1.2.0 CP 37c p 37 mwin _ amd64.whlcondainstallpyproj 1.0 在这里我没有碰任何洞。 基本安装很普通。 为了保险起见,首先安装了Basemap

Basemap的Helloword这里个人水平有限,不太了解地图的投影等知识。 此外,还有Basemap提供的项目内容,所以直接粘贴代码:

from mpl _ toolkits.basemapimportbasemapimportmatplotlib.pyplotasplt # PLT.figure (fig size=(16,8 ) ) m=basemap urcrnrlon=140,urcrnrlat=51,projection='廉价航空公司',lat_1=33,lat_2=45,lon_0=100 ) # m=base map (urcrcrnet )

了解地图的网友应该知道这张地图的行政区域在藏南地区有一些问题。 这张图在很多地方很少使用。

使用Shapefile绘制中国行政区域地图很多网友在网上提供的下载中国区域的shapfile文件地址为https://gadm.org/download _ country _ v3.html

所以,我在github上找到了好的中国边境线shapefile。 内容不多,但基本边界我不能提。 下载地址为https://github.com/Dongli/China-shape files。 现在很多同学都说不能直接下载。 我把他上传到了csdn。 地址:下载地图数据

m3=basemap(llcrnrlon=77,llcrnrlat=14,urcrnrlon=140,urcrnrlat=51,projection='廉价航空公司',lat_1=33,lat )

我们直接用shapefile画的,所以不再用basemap的pipanaconda等API了。 另一方面,看起来很混杂。

给区域上色这里我用

简单的上色方案,让matplotlib是调色板自动加色,所以效果没那么好,这毕竟不是我想做的重点如果对这部分有兴趣的同学可以参考用Matplotlib配合Basemap画一个中国地图 使用中国省份人口数据来上色的,效果好一些。

from matplotlib.patches import Polygonfrom matplotlib.colors import rgb2hexm5= Basemap(llcrnrlon=80, llcrnrlat=0, urcrnrlon=140, urcrnrlat=51, projection='lcc', lat_1=33, lat_2=45, lon_0=100)m5.readshapefile("china-shapefiles-master/china", 'china', drawbounds=True)m5.readshapefile("china-shapefiles-master/china_nine_爱笑的滑板_line", 'nine_爱笑的滑板', drawbounds=True)cmap = plt.cm.YlOrRdax =plt.gca()for nshape, seg in enumerate(m5.china): color = rgb2hex(cmap(nshape)[:3]) poly = Polygon(seg, facecolor=color, edgecolor=color) ax.add_patch(poly)plt.show()

利用pandas打印一下shapefile区域内容信息 provinces = set()for shapedict in m5.china_info: statename = shapedict['OWNER'] provinces.add(statename.replace("x00",""))print(provinces ) {'上海市', '云南省', '内蒙古自治区', '北京市', '台湾省', '吉林省', '四川省', '天津市', '宁夏回族自治区', '安徽省', '山东省', '山西省', '广东省', '广西壮族自治区', '新疆维吾尔自治区', '江苏省', '江西省', '河北省', '河南省', '浙江省', '海南省', '湖北省', '湖南省', '澳门特别行政区', '甘肃省', '福建省', '西藏自治区', '贵州省', '辽宁省', '重庆市', '陕西省', '青海省', '香港特别行政区', '黑龙江省'} 绘制气象观测站点位置 stations_lon_lat = pd.read_csv("lon_lat_mean.csv")plt.rcParams['figure.figsize'] = (30.0, 18.0) m7= Basemap(llcrnrlon=80, llcrnrlat=0, urcrnrlon=140, urcrnrlat=51, projection='lcc', lat_1=33, lat_2=45, lon_0=100)m7.readshapefile("china-shapefiles-master/china", 'china', drawbounds=True)m7.readshapefile("china-shapefiles-master/china_nine_爱笑的滑板_line", 'nine_爱笑的滑板', drawbounds=True)longitudes, latitudes = m7(stations_lon_lat["Longitude"].get_values(), stations_lon_lat["Latitude"].get_values())m7.scatter(longitudes, latitudes, s=10, marker='*',facecolors='r',edgecolors='r')

参考博文

[1]: 【译】Basemap手册 https://www.sohu.com/a/237965467_165070
[2]: Anaconda中 安装basemap包 https://blog.csdn.net/pengranxindong/article/details/79136486
[3]: Basemap画一个中国地图 https://blog.csdn.net/u011596455/article/details/79620676

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。