python базовая карта matplotlib показывает полигоны на карте - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь визуализировать многоугольник, используя python matplot Basemap lib.

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

def render_polygon(lat, long):
  map = Basemap(llcrnrlon=-10,llcrnrlat=35,urcrnrlon=35,urcrnrlat=60.,
                                  resolution=None, projection='tmerc', lat_0 =
                                  8.30, lon_0 = 3.46)
  map.plot(lat, long, marker=None,color='m')
  plt.show()

lat = [56.1304, 55.1304, 54.1304, 53.1304, 52.1304]
long = [106.3468, 107.3468, 105.3468, 104.3468, 103.3468]
render_polygon(lat, long)

Когда я запускаю программу, передавая широту и долготу, я вижу пустой прямоугольник. Может кто-то указать, что я делаю неправильно?

1 Ответ

0 голосов
/ 29 марта 2020

Вам нужно преобразовать координаты в процессе. Попробуйте изменить

map.plot(lat, long, marker=None, color='m')

на

map.plot(*map(long, lat), marker=None, color='m')

Код *map(long, lat) выполняет необходимое преобразование координат и распространяет результат в xs, ys в этом месте.

Редактировать 1

Исходный код был отредактирован для получения соответствующего экстента данных, правильных параметров проекции.

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

def render_polygon(lat, long):
  map = Basemap(llcrnrlon=103, llcrnrlat=50, urcrnrlon=107.5, urcrnrlat=60.,
                resolution='c', projection='merc', 
                lat_0 = 50, lon_0 = 105)
  map.plot(*map(long, lat), marker=None, color='m')
  #map.drawcoastlines(linewidth=0.7)
  plt.show()

lat = [56.1304, 55.1304, 54.1304, 53.1304, 52.1304]
long = [106.3468, 107.3468, 105.3468, 104.3468, 103.3468]
render_polygon(lat, long)

Выходной график:

enter image description here

...