首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cartopy中,从基本地图移动到cartopy

在cartopy中,从基本地图移动到cartopy
EN

Stack Overflow用户
提问于 2018-12-20 17:26:15
回答 1查看 983关注 0票数 3

因此,我已经在Python2.7中使用Basemap多年了,我将迁移到Python3.7,并希望迁移到cartopy。我处理了很多数据,其中我有投影信息,但我没有lat和龙的数据网格。这就是我在基本地图上处理事情的方式。

代码语言:javascript
复制
m=Basemap(
    llcrnrlon=-118.300,
    llcrnrlat=20.600,
    urcrnrlon=-58.958,
    urcrnrlat=51.02,
    projection='lcc',
    lat_1=38.,
    lat_2=38.,
    lon_0=-95.,
    resolution ='l',
    area_thresh=1000.
)
mwidth =  1008 #for 163 5km AWIPS2 grid
mheight = 722  #for 163 5km AWIPS2 grid

所以我在基本地图中设置了参考网格m.然后绘制数据.我用这个

代码语言:javascript
复制
lons,lats=m.makegrid(mwidth,mheight)
x,y=m(lons,lats)

然后,我可以像这样使用contourf或pcolormesh:

代码语言:javascript
复制
m.contourf(x,y,data)

我基本上是在寻找一个类似于cartopy或pyproj或osgeo。我想用网格的大小传递投影信息,然后得到lat/lons,这样我就可以用cartopy绘制图了。

任何帮助都很感激..。

EN

回答 1

Stack Overflow用户

发布于 2018-12-21 10:59:21

令人讨厌的医生表示它返回在投影坐标系中等距的lats和lons。我想你主要是用这个把投影数据放到任何地图上,让basemap给出lat/lon的位置。Cartopy的操作方式完全不同,因为您完全可以在本机坐标系中指定坐标的坐标系。

因此,如果您知道您的数据在lcc (Lambert )中的坐标,那么您可以将这些坐标传递到cartopy,这将酌情为您重新设计:

代码语言:javascript
复制
xs = np.linspace(llc_x0, llc_x1, n_xs),
ys = np.linspace(llc_y0, llc_y1, n_ys),
plt.contourf(xs, ys, data, transform=ccrs.LambertConformalConic())

实际上,为了能够绘制数据,您实际上不需要谈论lons/lats。

在一些罕见的情况下,您只知道lats/lons,即使数据被投影在另一个空间。Cartopy处理这一问题的方法是:

代码语言:javascript
复制
plt.contourf(lons, lats, data, transform=ccrs.PlateCarree())

最后,如果您在投影空间中有一个边框,但是边框角在lon/lat中,那么您可以简单地转换这些角,然后使用行空间。以下(未经测试的)代码应该可以做到这一点:

代码语言:javascript
复制
import cartopy.crs as ccrs
import numpy as np

llc = ccrs.LambertConformal()

width = 20
height = 25
llcrnrlon=-118.300
llcrnrlat=20.600
urcrnrlon=-58.958
urcrnrlat=51.02

lons = np.array([llcrnrlon, urcrnrlon])
lats = np.array([llcrnrlat, urcrnrlat])

projected_corners = llc.transform_points(
    ccrs.PlateCarree(), lons, lats)

xs = np.linspace(
    projected_corners[0, 0], projected_corners[1, 0], width)
ys = np.linspace(
    projected_corners[0, 1], projected_corners[1, 1], height)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53873435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档