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)

相关推荐

  • 一个方法或变量是private属性的访问范围是什么

    技术一个方法或变量是private属性的访问范围是什么本篇文章给大家分享的是有关一个方法或变量是private属性的访问范围是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟

    攻略 2021年11月9日
  • python和sqlite3数据库如何实现简单登陆注册功能

    技术python和sqlite3数据库如何实现简单登陆注册功能这篇文章将为大家详细讲解有关python和sqlite3数据库如何实现简单登陆注册功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后

    攻略 2021年12月4日
  • C/C++ 数据类型 表示最大 最小数值 探讨

    技术C/C++ 数据类型 表示最大 最小数值 探讨 C/C++ 数据类型 表示最大 最小数值 探讨C/C++中存储数字格式有整型和浮点型 字符型数据本质上也是以整型存储整型
    对于整型数据,最大值最小值很

    礼包 2021年10月26日
  • 怎么用EthMon.php监听以太坊代币转账交易

    技术怎么用EthMon.php监听以太坊代币转账交易怎么用EthMon.php监听以太坊代币转账交易,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。EthMo

    攻略 2021年10月23日
  • 有机花菜怎么做好吃又简单,酱汁蒜香有机花菜是怎么做的

    技术有机花菜怎么做好吃又简单,酱汁蒜香有机花菜是怎么做的前言最近几年在菜市场上出现了一种长的特别疏松的花菜,卖菜的老板都说那得有机花菜,它们生长的环境比较纯净,营养价值和口感都比普能的花菜要好一些有机花菜怎么做好吃又简单

    生活 2021年10月29日
  • HBase原理、基本概念、基本架构-3

    技术HBase原理、基本概念、基本架构-3 HBase原理、基本概念、基本架构-3HBase是Apache Hadoop的数据库,能够对大型数据提供随机、实时的读写访问。HBase的目标是存储并处理大型

    礼包 2021年12月22日