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)

相关推荐

  • 朴实,有人说农民勤劳朴实,是真的吗

    技术朴实,有人说农民勤劳朴实,是真的吗乡村农民,种田耕作,养家糊口,获得收入,非常勤劳。长时间勤劳幸苦,养成朴实性格,令农村有一种纯天然的美和令人留恋的道德。这是每一位中国人都能深深体会到和骄傲的。农民的勤劳朴实,令农村

    生活 2021年10月22日
  • 怎样用Python爬取京东的价格和标题及评价等商品情况

    技术怎样用Python爬取京东的价格和标题及评价等商品情况这篇文章将为大家详细讲解有关怎样用Python爬取京东的价格和标题及评价等商品情况,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知

    攻略 2021年10月26日
  • 松柏读音,赠从弟其二刘桢这首古诗的读音

    技术松柏读音,赠从弟其二刘桢这首古诗的读音zèng cóng dì qí èr赠从弟·其二
    wèi liú zhēn
    魏晋松柏读音:刘桢
    tíng tíng shān shàng sōng,sè sè gǔ zhōng

    生活 2021年10月21日
  • 如何使用mybatis的interceptor修改执行sql和传入参数

    技术如何使用mybatis的interceptor修改执行sql和传入参数这篇文章主要介绍“如何使用mybatis的interceptor修改执行sql和传入参数”,在日常操作中,相信很多人在如何使用mybatis的in

    攻略 2021年12月3日
  • javaSE中的==和equals的联系与区别是怎样的

    技术javaSE中的==和equals的联系与区别是怎样的这篇文章给大家介绍javaSE中的==和equals的联系与区别是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。写在前面:==和equ

    攻略 2021年12月2日
  • c++ string类

    技术c++ string类 c++ string类string类
    将StrVec类的一些变量进行全局替换就能得到String类
    1、string替换为char
    2、str替换为c,strs替换为c
    3、

    礼包 2021年12月3日