Python制作中国地图

介绍

最近需要绘制中国地图,由于之前都是非常简单地直接绘制地图已不可取!因此严格按照规定来直接一张中国地图。

所需材料

下载中国地图shape
中国气象站点数据

代码

下面直接贴代码和最终结果图形。


import os
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from mpl_toolkits.axes_grid1.inset_locator import inset_axes, zoomed_inset_axes

homedir = os.path.dirname(os.path.realpath(__file__))
output_type = 'png'

fig = plt.figure(figsize=(5,3))
ax = fig.add_subplot(111, position=[0.08,0.08,0.84,0.82])
axins = zoomed_inset_axes(ax, zoom=0.8, loc='lower right')
m = Basemap(projection='cyl', llcrnrlat=15, llcrnrlon=73, urcrnrlat=56, urcrnrlon=137, ax=ax)
m.readshapefile(os.path.join(homedir, 'shp', 'china_country'), 'china_country')
m.readshapefile(os.path.join(homedir, 'shp',"china_nine_dotted_line"),  'nine_dotted', drawbounds=True)
# 绘制站点
m_lon, m_lat = m(stainfos.lon.values, stainfos.lat.values)
m.scatter(m_lon, m_lat, s=1, color='r', zorder=10)
# 绘制地形?
m2 = Basemap(projection='cyl', llcrnrlat=0, llcrnrlon=107, urcrnrlat=20, urcrnrlon=121)
m2.readshapefile(os.path.join(datadir, 'shp', 'china_country'), 'china_country')
m2.readshapefile(os.path.join(datadir, 'shp',"china_nine_dotted_line"),  'nine_dotted', drawbounds=True)
m2_logical = stainfos.lat <= 25
m_lon, m_lat = m2(stainfos[m2_logical].lon.values, stainfos[m2_logical].lat.values)
m2.scatter(m_lon, m_lat, s=1, c='r', zorder=10)
m.drawparallels(np.arange(10, 60 + 1, 5), labels = [1, 1, 0, 0])
m.drawmeridians(np.arange(70, 150 + 1, 10), labels = [0, 0, 1, 1])  
fileout = os.path.join(homedir, f'000-research_area.{output_type}')
plt.savefig(fileout, dpi=300)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 绘制地图在python中主要用到的 basemap 库,这个库是 matplotlib 库中一个用于在 Pytho...
    estate47阅读 5,308评论 1 20
  • 社团课剪纸,我制作的是花型的剪纸。这种剪纸我有些不会做,我有的时候是叫同桌来帮我的,其他的图面花盆和花枝都是我自己...
    殷培瑜123阅读 117评论 0 0
  • 那年你折下一枝桃花雨 敛花入酒酿一坛回忆 惹醉春风沉吟不肯归去 长安又飞尽柳絮 我醉倒十里长堤 再寻不到你酿下的那...
    来路远方阅读 358评论 3 4
  • 项目实用 存在的循环引用-容易被忽略的地方 Cell中, 可以实用 [weak self] 在SB中跳转页面的时候...
    iChuck阅读 1,074评论 0 0
  • 今天,从老家回来,回到家,换了衣服,冲进澡间试图将近几天来的疲惫尽数洗去,洗完澡,我躺在床上,带着一丝慵懒,...
    louisewyl阅读 181评论 0 1