python怎么绘制中国地图

技术python怎么绘制中国地图这篇文章主要讲解了“python怎么绘制中国地图”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python怎么绘制中国地图”吧!前言气象、

本文主要讲解“python如何绘制中国地图”。本文的解释简单明了,易学易懂。请跟随边肖的思路一起学习学习《巨蟒如何画中国地图》!

从00到1010,与气象学、海洋学和地球科学相关的分析将不可避免地涉及地图的可视化。

在Python中,我用于制图和空间信息分析的公共库是Cartopy。

漫画有一个非常严重的问题,那就是它自己的中文边框数据有问题,这也是很多国外开源库普遍存在的问题。

在做中国区域分析的时候,最标准的方式是同时绘制南海区域的子图,因为九段线的位置很偏南。

在做一些网站展示的时候,如果只单独画几个网站,总觉得很丑,可以加一些地形背景。

综上所述,今天我想用一个小例子来解决这三个问题:

用正确的中国国境线和九段线画一张南海小地图,画一张全球地形图。添加

前言

获取正确的中文矢量文件:微信官方账号后台消息“中国行政区划”

(此矢量文件来自资源环境平台,与权威机构的标准图对比,一致。)获取全局地形图片:微信官方账号后台消息“全局地形”

(提供全球50m分辨率的tif图。如果分辨率要求不高,可以使用stock _ img()

准备工作

#-*-coding : utf-8-*-

importnumpayasnp

importpandasaspd

进口漫画

importcartopy.crsasccrs

importcartopy . featureas feature

from carto py . mpl .gridlineimport经度_FORMATTER,LATITUDE_FORMATTER

from cartopy . io . shapereaderimportreader,natural_earth

importmatplotlib.pyplotasplt

importmatplotlib . tickersmitecker

from matplotlib . imageimportimread

defcreate_map():

shp_path='。/cn _ shp/省份_9/'

#-创建绘图空间

Proj=ccrs。PlateCarree()#创建坐标系

fig=PLT . fig(fig size=(6,8),dpi=400) #创建页面

ax=fig .子图(1,1,子图_kw={'projection':proj})

#-设置地图属性

省份=cfeat。ShapelyFeature(

阅读器(shp_path '省份_9.shp ')。几何图形(),

proj,edgecolor='k ',

(=NationalBureauofStandards)国家标准局

p;       facecolor='none'
    )
    # 加载省界线
    ax.add_feature(provinces, linewidth=0.6, zorder=2)
    # 加载分辨率为50的海岸线
    ax.add_feature(cfeat.COASTLINE.with_scale('50m'), linewidth=0.6, zorder=10)
    # 加载分辨率为50的河流~
    ax.add_feature(cfeat.RIVERS.with_scale('50m'), zorder=10)
     # 加载分辨率为50的湖泊
    ax.add_feature(cfeat.LAKES.with_scale('50m'), zorder=10)
    ax.set_extent([105, 133, 15, 45])
    # ax.stock_img()
    ax.imshow(
        imread('./NE1_50M_SR_W.tif'),
        origin='upper',
        transform=proj,
        extent=[-180, 180, -90, 90]
    )
    # --设置网格点属性
    gl = ax.gridlines(
        crs=ccrs.PlateCarree(),
        draw_labels=True,
        linewidth=1.2,
        color='k',
        alpha=0.5,
        linestyle='--'
    )
    gl.xlabels_top = False  # 关闭顶端的经纬度标签
    gl.ylabels_right = False  # 关闭右侧的经纬度标签
    gl.xformatter = LONGITUDE_FORMATTER  # x轴设为经度的格式
    gl.yformatter = LATITUDE_FORMATTER  # y轴设为纬度的格式
    gl.xlocator = mticker.FixedLocator(np.arange(95, 145 + 5, 5))
    gl.ylocator = mticker.FixedLocator(np.arange(-5, 45 + 5, 5))

    # --设置小地图
    left, bottom, width, height = 0.67, 0.15, 0.23, 0.27
    ax2 = fig.add_axes(
        [left, bottom, width, height], 
        projection=proj
    )
    ax2.add_feature(provinces, linewidth=0.6, zorder=2)
    ax2.add_feature(cfeat.COASTLINE.with_scale('50m'), linewidth=0.6, zorder=10)
    ax2.add_feature(cfeat.RIVERS.with_scale('50m'), zorder=10)
    ax2.add_feature(cfeat.LAKES.with_scale('50m'), zorder=10)
    ax2.set_extent([105, 125, 0, 25])
    # ax2.stock_img()
    ax2.imshow(
        imread('./NE1_50M_SR_W.tif'),
        origin='upper',
        transform=proj,
        extent=[-180, 180, -90, 90]
    )
    return ax

def main():
    ax = create_map()
    title = f'distribution of station around China'
    ax.set_title(title, fontsize=18)

    df = pd.read_csv('buyo_position.csv')
    df['lon'] = df['lon'].astype(np.float64)
    df['lat'] = df['lat'].astype(np.float64)
    ax.scatter(
        df['lon'].values,
        df['lat'].values,
        marker='o',
        s=10 ,
        color ="blue"
    )
    for i, j, k in list(zip(df['lon'].values, df['lat'].values, df['name'].values)):
        ax.text(i - 0.8, j + 0.2, k, fontsize=6)
    plt.savefig('station_distribute_map.png')

if __name__ == '__main__':
    main()    

感谢各位的阅读,以上就是“python怎么绘制中国地图”的内容了,经过本文的学习后,相信大家对python怎么绘制中国地图这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/118548.html

(0)

相关推荐

  • mr on yarn架构

    技术mr on yarn架构 mr on yarn架构提交作业①程序打成jar包,在客户端运行hadoop jar命令,提交job到集群运行job.waitForCompletion(true)中调用J

    礼包 2021年12月3日
  • python 操作redis数据库

    技术python 操作redis数据库 python 操作redis数据库安装redis的python库
    pip install redis
    普通的redis链接操作
    import redis #

    礼包 2021年12月2日
  • 水浒传人物名字,《水浒传》中的主要人物是谁

    技术水浒传人物名字,《水浒传》中的主要人物是谁公孙胜 水浒传人物名字,鲁智深 ,林冲 ,吴用,李逵,宋江 ,武松,杨志等。1、姓名:宋江
    绰号:及时雨
    性格特点:为人仗义、善于用人,但总想招安。
    主要事迹:私放晁盖、怒杀

    生活 2021年10月30日
  • Pycharm怎么安装PyQt5

    技术Pycharm怎么安装PyQt5本篇内容主要讲解“Pycharm怎么安装PyQt5”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Pycharm怎么安装PyQt5”吧!1.

    攻略 2021年12月8日
  • 唐僧性格,唐僧的人物性格,300字

    技术唐僧性格,唐僧的人物性格,300字唐 僧唐僧性格:俗家姓陈,乳名江流,法名玄奘,唐朝第一高僧,所以被人们称为唐僧。西行取经时,唐朝太宗皇帝李世民赐法名三藏。唐僧十八岁出家皈依佛门,经常青灯夜读,对佛家经典研修不断,而

    生活 2021年10月26日
  • nginx内存池源码分析

    技术nginx内存池源码分析本篇内容主要讲解“nginx内存池源码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nginx内存池源码分析”吧!内存池概述 内存池是在

    攻略 2021年11月19日