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)

相关推荐

  • hadoop怎样安装与配置

    技术hadoop怎样安装与配置这篇文章主要为大家展示了“hadoop怎样安装与配置”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“hadoop怎样安装与配置”这篇文章吧。##1

    攻略 2021年11月26日
  • 省略的拼音,列举的省略号是什么意思

    技术省略的拼音,列举的省略号是什么意思省略号(……),又称删节号,用于省略原文的符号,中间不能断。   “引文的省略,用省略号标明。”   “举例的省略,用省略号标明。”   “说话断断续续,可以用省略号标示。”   “

    生活 2021年10月23日
  • 39三分之一是多少码,运动鞋码子40三分之一是什么意思

    技术39三分之一是多少码,运动鞋码子40三分之一是什么意思比40码大一点39三分之一是多少码。 脚长是厘米(CM)计算,鞋码用欧码(39码、40码等)计算。 脚长换成欧码:量好你的脚长乘以两倍减去十厘米(脚长X2-10=

    生活 2021年10月21日
  • 大年初一英文,关于大年初一的英语作文50词

    技术大年初一英文,关于大年初一的英语作文50词The Spring Festival is one of the traditional festivals in China. People celebrate it i

    生活 2021年10月22日
  • C++11:maketuple

    技术C++11:maketuple C++11:make_tuple翻译来自:https://thispointer.com/c11-make_tuple-tutorial-example/
    本文中,我

    礼包 2021年11月23日
  • 数据库内存共享实现原理是什么

    技术数据库内存共享实现原理是什么这篇文章主要讲解了“数据库内存共享实现原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库内存共享实现原理是什么”吧!共享内存是

    攻略 2021年11月4日