- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 Cartopy 和 Anaconda Python 绘制 map 点,但在转换时遇到了一些奇怪的失败。在我的简单示例中,我试图绘制 3 个点,但它们正在加倍。
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
lons = [214.5, 2.7, 197.5]
lats = [35, 36, 37.]
ax = plt.axes(projection=ccrs.Orthographic(
central_longitude=0,
central_latitude=90))
# plot lat/lon points
ax.plot(lons, lats, 'ro',
transform=ccrs.Geodetic())
# plot north pole for reference
ax.plot([0], [90], 'b^',
transform=ccrs.Geodetic())
# add coastlines for reference
ax.coastlines(resolution='50m')
ax.set_global()
plt.show()
测试:
cartopy==0.16.0
和 Cartopy-0.16.1.dev179-
proj4==4.9.3
, proj4==5.0.1
, proj4==5.0.2
我唯一的提示是,使用 Cartopy-0.16.1.dev179-
和 proj4==5.0.1
,我得到了这个 UserWarning
:
/Users/***/anaconda3/lib/python3.6/site-packages/cartopy/crs.py:1476: UserWarning: The Orthographic projection in Proj between 5.0.0 and 5.1.0 incorrectly transforms points. Use this projection with caution.
我在 https://github.com/SciTools/cartopy/issues/1172 上开了一个问题但问题已关闭。任何人都知道如何让 cartopy 与正交投影一起正常工作?
最佳答案
据我所知,您可以使用多种方法来获得预期的结果。
首先,显式转换要在原生投影中的点...
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
# create the lat/lon points
lons = np.array([214.5, 2.7, 197.5])
lats = np.array([35, 36, 37.])
# create the projections
ortho = ccrs.Orthographic(central_longitude=0, central_latitude=90)
geo = ccrs.Geodetic()
# create the geoaxes for an orthographic projection
ax = plt.axes(projection=ortho)
# transform lat/lons points to othographic points
points = ortho.transform_points(geo, lons, lats)
# plot native orthographic points
ax.plot(points[:, 0], points[:, 1], 'ro')
# plot north pole for reference (with a projection transform)
ax.plot([0], [90], 'b^', transform=geo)
# add coastlines for reference
ax.coastlines(resolution='50m')
ax.set_global()
这个情节符合预期......
Expected Orthographic projection plot
您看到的最初问题是 cartopy
试图将点序列解释为有界几何(或路径),但有点困惑。将纬度/经度点显式转换为原生正交点可避免此子弹。
了解这些信息后,我们可以选择调用适当的方法,将点列表视为单个点(并避免 cartopy
做出不符合我们期望的假设),方法是使用 scatter
而不是 plot
...
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
# create the lat/lon points
lons = np.array([214.5, 2.7, 197.5])
lats = np.array([35, 36, 37.])
# create the projections
ortho = ccrs.Orthographic(central_longitude=0, central_latitude=90)
geo = ccrs.Geodetic()
# create the geoaxes for an orthographic projection
ax = plt.axes(projection=ortho)
# plot native orthographic scatter points
ax.scatter(lons, lats, marker='o', c='r', transform=geo)
# plot north pole for reference
ax.plot([0], [90], 'b^', transform=geo)
# add coastlines for reference
ax.coastlines(resolution='50m')
ax.set_global()
这也适用于我。
HTH
关于python - Cartopy 绘图点与正交投影不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53195551/
我画了两组重叠的轴,一组是另一组的放大版。我想在缩放轴的角和它在较大轴上代表的矩形的角之间画线。但是,我画的线稍微偏离了位置。我试图将其浓缩为一个简单的示例: import cartopy.crs a
我想知道给定纬度和经度,坐标是陆地还是海洋 根据https://gis.stackexchange.com/questions/235133/checking-if-a-geocoordinate-p
我已经看到了一些关于这个主题的其他问题,但是库已经发生了很大的变化,以至于这些问题的答案似乎不再适用。 栅格 used to include an example用于在 Cartopy GeoAxes
我正在为 xarray 进行一些开发。我试图安装 rasterio 但它似乎搞砸了我的 cartopy 安装。 我在我的 mac 上安装了 rasterio: brew install gdal pi
使用 basemap ,我曾经像这样添加我的自定义边界 shapefile: map = Basemap(..) map.readshapefile(file.shp, 'attribute', dr
所以,多年来我一直在 Python 2.7 中使用 Basemap,我正在转向 Python3.7 并且想转向 cartopy。我处理大量数据,其中我有投影信息,但我没有数据的纬度和经度网格。这就是我
我想要制作一个点的动画,该点沿着 map 上的一个位置到另一个位置的路径移动。 例如,我使用大地测量变换绘制了从纽约到新德里的路径。例如。取自文档 Adding data to the map plt
我想绘制来自全局多维数据集的数据,但仅限于国家/地区列表。因此,我根据国家/地区的“边界框”选择一个子立方体。 到目前为止一切顺利。我正在寻找一种简单的方法来掩盖立方体中不属于我的任何国家/地区的所有
如果我定义一组具有给定高度和宽度的(地理)轴,我如何确保绘图将填充这些轴? import matplotlib.pyplot as plt import cartopy.crs as ccrs ax
我有两个 shapefile。一个是点要素 shapefile,名为“point.shp”,另一个是名为“polygon.shp”的多边形 shapefile。我想使用 cartopy 添加到 map
我是 cartopy 的新手,仍在学习基本功能。 我试图绘制一个特定的区域,但是,当我请求 80oN 时,cartopy 扩展了这个区域并生成了一个高达大约 85oN 的 map 。有没有办法确保我只
我正在尝试在北太平洋投影上绘制 250 hPa 位势高度、1000 hPa 可降水量和 250 hPa 风速。当尝试使用倒刺时,我没有收到错误,但倒刺并没有实际显示在 map 上。我认为这可能与我的数
我想用 180 在图的底部绘制北半球的极地立体图,以便我可以强调太平洋地区。我正在使用来自 git 的最新 cartopy,并且可以制作极坐标立体图没有问题,但我无法弄清楚如何更改图底部的经度。我尝试
我正在使用 matplotlib 和 Cartopy 从二维网格数据集生成图像。以下链接中的示例如下所示: 驱动此图像创建并将出现问题的关键代码如下: dataset = Dataset('/path
我想使用 Cartopy 仅绘制一个区域(在我的例子中,北美和南美)。 我目前正在使用以下代码: import cartopy import cartopy.crs as ccrs import ma
我正在尝试使用 Cartopy 在北极立体 map 投影上创建等高线图。我使用 add_cycular_point() 尝试解决经度 0 和经度 35X 之间存在间隙的问题,并按照文档 (always
我正在尝试使用 Cartopy 和 Anaconda Python 绘制 map 点,但在转换时遇到了一些奇怪的失败。在我的简单示例中,我试图绘制 3 个点,但它们正在加倍。 import matpl
如何在 Cartopy 中绘制美国县边界? 绘制州和国家边界非常简单 ax.add_feature(cfeature.BORDERS.with_scale('50m')) ax.add_feature
我正在尝试在 OSM 图 block 之上过度绘制一些卫星图像数据。 我可以分别绘制它们,但似乎不能过度绘制,我认为这取决于投影。 我加载数据并获取投影信息 ds = gdal.Open(fname)
我正在尝试使用 cartopy 绘制北极的轮廓。我已经使用了 add_circlic_point ,这已经成功地填充了 pcolormesh 中本初子午线的间隙,但是轮廓没有成功交叉,而是绕地球一圈进
我是一名优秀的程序员,十分优秀!