【发布时间】:2020-12-19 19:29:54
【问题描述】:
我想在用户输入的纬度和经度周围制作一张方形地图。
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
import cartopy.feature
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
x=float(input('Enter latitude:'))
y=float(input('Enter longitude:'))
ax = plt.axes(projection=ccrs.PlateCarree())
ax.set_extent([y-10,y+10,x-10,x+10],ccrs.PlateCarree())
ax.coastlines()
ax.gridlines(draw_labels=True)
plt.show()
剧情不错 如果我不走向两极,这可行-
这里不计算地球的球度,停止在90度-
如果我将投影改为正交,极点问题可能会解决。
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
import cartopy.feature
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
x=float(input('Enter latitude:'))
y=float(input('Enter longitude:'))
ax = plt.axes(projection=ccrs.Orthographic(y,x))
ax.set_extent([y-10,y+10,x-10,x+10],ccrs.PlateCarree())
ax.coastlines()
ax.gridlines(draw_labels=True)
plt.show()
我认为考虑了球形度,当我靠近赤道时,我可能会得到一个很好的正方形图。但是,当我接近两极时,正方形会开始缩小,最终我不会得到一个好的区域,因为我必须从那个正方形区域获取纬度和经度,并用它们计算一些值。
例如,下面有两个图
在 lat=80 long = 60 处绘制
这张图片澄清了这个问题。我也需要截然相反的一面,所以纬度应该再次从 90 开始减少到 0,但是经度会再次改变。这样,我无处可去,卡住了。
在 lat = 22 和 long = 78 处绘制
第一个变成矩形,第二个变成正方形。如何使它们与任何给定的经纬度面积相等?
即使我将set_extent 的投影更改为LCC 或任何其他,我也无法根据中心设置范围。
【问题讨论】:
标签: python matplotlib cartopy