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)

相关推荐

  • vscode常用pythonexcel插件(vscode有没有pb插件)

    技术vscode+babel然后开发一个智能移除未使用变量的插件本篇文章给大家分享的是有关vscode+babel然后开发一个智能移除未使用变量的插件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有

    攻略 2021年12月22日
  • java swing 基础教程2(java swing界面添加小功能)

    技术如何浅析Swing项目的开发如何浅析Swing项目的开发,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。由于工作最近接手一个Swing项目,开发周期为一年

    攻略 2021年12月18日
  • 关于C++的坑有哪些

    技术关于C++的坑有哪些这篇文章主要讲解了“关于C++的坑有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“关于C++的坑有哪些”吧!1. string的字符串拼接,导

    攻略 2021年10月25日
  • 如何使用Spring Session 与 Spring security 完成网站登录改造

    技术如何使用Spring Session 与 Spring security 完成网站登录改造如何使用Spring Session 与 Spring security 完成网站登录改造,相信很多没有经验的人对此束手无策,

    攻略 2021年11月9日
  • 如何联系微信客服,微信理财通怎么联系客服

    技术如何联系微信客服,微信理财通怎么联系客服步骤如下:打开微信应用程序,然后使用手机号、QQ号或者邮箱登录自己的微信帐号,如图所示如何联系微信客服。登录成功后,点击界面顶部右上角的三点图标按钮。在出现的菜单列表中选择界面

    生活 2021年10月23日
  • 如何选择好的虚拟主机或者网站空间

    技术如何选择好的虚拟主机或者网站空间这篇文章主要为大家展示了“如何选择好的虚拟主机或者网站空间”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何选择好的虚拟主机或者网站空间”

    攻略 2021年11月1日