首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cartopy Orthographic和RotatedPole将经度降低180度

使用cartopy Orthographic和RotatedPole将经度降低180度
EN

Stack Overflow用户
提问于 2017-02-11 01:23:29
回答 1查看 1.1K关注 0票数 0

我试着将蓝点从北极沿着本初子午线(longitude=0)放置,但却看到这些点沿着日期线(longitude=180)移动。代码:

代码语言:javascript
复制
#!/usr/bin/env python
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
Lon = 0
ax = plt.axes( projection=ccrs.Orthographic( central_latitude=70,
                                             central_longitude=Lon) )
ax.set_global()
vector_crs = ccrs.RotatedPole( pole_latitude=90, pole_longitude=Lon )
ax.plot([Lon, Lon, Lon, Lon, Lon, Lon],   # longitude
        [ 90,  80,  70,  60,  50,  40],   # latitude
        'bo', markersize=5, transform=vector_crs)
ax.stock_img()
plt.show()

可能是一些与变换相关的东西,但我还没有弄清楚是什么。Cartopy版本0.14.2,Python 3.6。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-13 21:47:50

我认为问题来自于您定义的转换投影:

代码语言:javascript
复制
ax = plt.axes(projection=vector_crs)
ax.coastlines()
plt.show()

请注意,在变换投影中,这个简单的海岸线图看起来像中心经度为180°的Plate图。考虑到这一点,让我们看看如何使用Plate投影在绘图上绘制样本数据点,以便也尝试简化您要绘制的地图:

代码语言:javascript
复制
ax = plt.axes(projection=ccrs.PlateCarree()) 
ax.plot([Lon, Lon, Lon, Lon, Lon, Lon],
        [ 90,  80,  70,  60,  50,  40],
        'bo', markersize=5, transform=vector_crs)
ax.stock_img()
plt.show()

与您的示例一样,这些点不会出现在我们预期的位置。最后,让我们在将点绘制到正交地图上时,尝试使用Plate投影作为点的变换:

代码语言:javascript
复制
ax = plt.axes(projection=ccrs.Orthographic(central_latitude=70,
                                           central_longitude=Lon))
ax.set_global()
ax.plot([Lon, Lon, Lon, Lon, Lon, Lon],
        [ 90,  80,  70,  60,  50,  40],
        'bo', markersize=5, transform=ccrs.PlateCarree())
ax.stock_img()
plt.show()

这似乎提供了更多您正在寻找的情节。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42165220

复制
相关文章

相似问题

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