У меня есть карта, нарисованная с помощью Cartopy и Matplotlib.У меня есть конкретная геометрическая координата (в широте / долготе), и я хотел бы знать координату пикселя, ближайшую к проекции этой геометрической координаты (если она видима), например, чтобы нарисовать изображение над координатой на карте.
(Обратите внимание, я не хочу рисовать с помощью Matplotlib; я экспортирую фигуру как растровое изображение и рисую в другой части конвейера.)
Эта документация предполагает, что это может быть что-то вроде этого:
import cartopy, matplotlib.pyplot
fig = matplotlib.pyplot.figure()
ax = fig.add_axes([0, 0, 1, 1], projection=cartopy.crs.Orthographic())
ax.add_feature(cartopy.feature.LAND, facecolor='black')
# Print the location of New York City in display coordinates
lon, lat = -74.0060, 40.7128
trans = cartopy.crs.Geodetic()._as_mpl_transform(ax)
x, y = trans.transform((lon, lat))
print(x, y)
# Or this way
projx, projy = ax.projection.transform_point(lon, lat, cartopy.crs.Geodetic())
x, y = ax.transData.transform((projx, projy))
print(x, y)
Хотя интересно, если я нанесу эту точку на карту, фигура центрируется и увеличивается в Манхэттене, а затем выходные координаты отображения действительно находятся вцентр фигуры в (640, 480).
matplotlib.pyplot.plot(lon, lat, marker='o', color='red', markersize=12,
alpha=0.7, transform=cartopy.crs.Geodetic())