栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

利用Basemap画世界地图

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

利用Basemap画世界地图

最近帮物理海洋专业的同学画图,发给我的数据文件是nc文件,里面是动力高度网格数据,需要任选一点在地图上标注,且画出该点的时间序列。

NetCDF(network Common Data Form)网络通用数据格式是一种面向数组型并适于网络共享的数据的描述和编码标准。目前,NetCDF广泛应用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域。用户可以借助多种方式方便地管理和操作 NetCDF 数据集。
NetCDF存储的数据是一个多自变量的函数,即f(x,y,z…)=value, 函数的自变量x、y、z等在NetCDF中叫做维(dimension),函数值value在NetCDF中叫做变量(variables),而自变量和函数值在物理学上的一些性质,在NetCDF中就叫属性(attributes)。

nc文件处理

读取nc文件数据可以利用netCDF4库

import netCDF4 as nc
nf = nc.Dataset(r'E://data//diann.nc','r')

一个NetCDF文件包含以下对象:

  1. 变量(variables)
nf.variables


#可得到adt变量的数据值,数据格式为numpy的数组
nf.variables['adt'][:]

  1. 维(dimension)
  2. 属性(attribute)
利用basemap画世界地图

basemap是matplotlib下的一个工具包,可用来绘制二维地图,实现数据可视化。
basemap的安装如果直接在maplotlib的基础上,会很容易出错,建议去官网下载whl文件,再进行安装。安装相关问题可参考本篇博客

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
plt.rcParams['axes.unicode_minus']=False   #这两行需要手动设置
from mpl_toolkits.basemap import basemap

plt.figure(figsize=(16,8))   
#使用basemap()创建一个地图
m = basemap() 
#把海岸线画上
m.drawcoastlines()  
#开始画上国家
m.drawcountries(linewidth=1.5) 
#添加经纬线
m.drawmeridians(
     np.arange(0, 360, 30),#设置纬线的真实范围,以及维度的间隔
     color='pink',  
     linewidth=1, 
     labels=[1, True, 0, True],
     fontsize=10,
)
m.drawparallels(
     np.arange(-90, 90, 30),
     color='green',  
     linewidth=1,  
     labels=[1, True, 0, 1],
     fontsize=10,
)
m.plot(160, 30, marker='o', color="r")
plt.show()             


basemap库的功能特别强大,是用来可视化地理数据的很不错的一个工具,感兴趣的同学可以继续学习。这个网站对于basemap的介绍比较齐全,可点击这里继续学习

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/350002.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号