добавить изображение с заданной координацией (широта, долгота) на карте-карте - PullRequest
0 голосов
/ 11 апреля 2020

Я хочу отметить какое-то место (широта, долгота) на карте-карте небольшой картинкой / значком. как я могу это сделать?

import cartopy.crs as crs
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(10, 5))
ax = plt.axes(projection=crs.PlateCarree())
ax.stock_img()

img = plt.imread('flag.png') #the image I want to add on the map

plt.show()

Я нашел источник здесь: https://gist.github.com/secsilm/37db690ab9716f768d1a1e43d3f53e3f Но это не работает для меня, карта отображается без какого-либо флага. Есть ли другой способ сделать это?

Спасибо большое!

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

Для меня это нормально работает:

import matplotlib.pyplot as plt
import cartopy.crs as crs
from matplotlib.offsetbox import AnnotationBbox, OffsetImage

# Read image
lat = 39
lon = -95
img = plt.imread('/Users/rmay/Downloads/flag.png')

# Plot the map
fig = plt.figure(figsize=(10, 5))
ax = plt.axes(projection=crs.PlateCarree())
ax.coastlines()
ax.stock_img()
# Use `zoom` to control the size of the image
imagebox = OffsetImage(img, zoom=.1)
imagebox.image.axes = ax
ab = AnnotationBbox(imagebox, [lon, lat], pad=0, frameon=False)
ax.add_artist(ab)

Вы можете попробовать отладку, изменив zoom на большее значение или установив frameon на True. Если у вас возникли дополнительные проблемы, обязательно оставьте свои значения для lon / lat.

0 голосов
/ 13 апреля 2020

Я попробовал код в гисте, которую вы связали, так как он использует cartopy для географической привязки изображения. Я получил следующий результат:

карта мира с флагом Китая

Это тот эффект, который вы хотели? Единственное, что я изменил в коде, скопированном с сути, - это изображение. Я использовал этот

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...