欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

python绘图设置正交坐标等距_python – 使用cartopy在其他项目中绘制投影数据

发布时间:2024/1/8 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python绘图设置正交坐标等距_python – 使用cartopy在其他项目中绘制投影数据 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

这个问题涉及绘制一些使用Lambert Conformal(LCC)CRS的数据.虽然这些问题特别适用于在多个投影中绘制LCC数据,但它也适用于一般的折纸使用,因为我希望更好地理解使用折叠绘图的逻辑/过程.

下面是我正在尝试做的一些代码示例.第一个例子是简单地绘制一些LCC数据.我使用的数据可在链接here中找到.

import cartopy.crs as ccrs

import cartopy.feature as cf

import matplotlib.pyplot as plt

import numpy as np

proj = ccrs.LambertConformal(central_latitude = 25,

central_longitude = 265,

standard_parallels = (25, 25))

# Data and coordinates (from download link above)

with np.load('nam_218_20120414_1200_006.npz') as nam:

dat = nam['dpc']

lat = nam['lat']

lon = nam['lon']

ax = plt.axes(projection = proj)

ax.pcolormesh(lon, lat, dat, transform = ccrs.PlateCarree())

ax.add_feature(cf.NaturalEarthFeature(

category='cultural',

name='admin_1_states_provinces_lines',

scale='50m',

facecolor='none'))

ax.coastlines('50m')

ax.add_feature(cf.BORDERS)

plt.show()

产生的情节可以在这里看到:

LCC地图上的美国露点

使用cartopy时我的第一个困惑是为什么在绘图时我总是要转换为PlateCarree?我最初的想法是pcolormesh调用的transform关键字需要LCC投影信息而不是PlateCarree.

接下来,如果我想在另一个投影中绘制我的LCC数据,例如正交,我会像下面这样做吗?

# First, transform from LCC to Orthographic

transform = proj.transform_points(ccrs.Orthographic(265,25), lon, lat)

x = transform[..., 0]

y = transform[..., 1]

ax = plt.axes(projection = ccrs.Orthographic(265,25))

ax.pcolormesh(x, y, dat, transform = ccrs.PlateCarree())

ax.add_feature(cf.NaturalEarthFeature(

category='cultural',

name='admin_1_states_provinces_lines',

scale='50m',

facecolor='none'))

ax.coastlines('50m')

ax.add_feature(cf.BORDERS)

ax.set_global()

产生的情节可以在这里看到:

美国露点地图上的露点

我认为正交图看起来是正确的,但我想确定我理解正确重新投影的过程.

总之,我想知道以下事项:

>绘图时你总是要转变为PlateCarree吗?为什么或者为什么不?

>重新投影是否只需要调用transform_points方法或是否涉及其他步骤?

更新1

根据@swatchai的答案,似乎我的问题2的答案是不需要transform_points.可以在许多matplotlib绘图方法中使用transform关键字参数.这就是我原来的想法.但是,跳过transform_points并不适用于我.见下面的例子:

ax = plt.axes(projection = ccrs.Orthographic(265,25))

ax.pcolormesh(lon, lat, dat, transform = proj)

ax.add_feature(cf.NaturalEarthFeature(

category='cultural',

name='admin_1_states_provinces_lines',

scale='50m',

facecolor='none'))

ax.coastlines('50m')

ax.add_feature(cf.BORDERS)

ax.set_global()

这产生了这个情节:

正交图没有transform_points步骤

问题似乎是lat和lon输入没有转换成网格坐标,所以它们只能绘制在图的极小区域内.那么,要扩展问题2,如果您应该跳过transform_points,那么基于我上面的例子,是否存在cartopy绘图方法中的错误?或者我还缺少一步?

总结

以上是生活随笔为你收集整理的python绘图设置正交坐标等距_python – 使用cartopy在其他项目中绘制投影数据的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。