Когда я использую базовую карту в python, долгота иногда меняется на противоположную, переворачивая карту - PullRequest
1 голос
/ 25 мая 2019

В python я использую базовую карту (https://matplotlib.org/basemap/) для построения пространственных данных, и я использовал ее в течение нескольких лет без особых проблем. Недавно мне пришлось переустанавливать python3 (через conda вместе с несколькимимодули) и basemap теперь имеет странную проблему: при определенных условиях карта будет отображаться с перевернутыми долготами, переключаясь на восток и запад. Например, я использую этот код: https://matplotlib.org/basemap/users/robin.html. Если я использую этот код каккарта отображается нормально, но когда я установил lon_0 = 180, карта переворачивается, как показано на изображении ниже.

Изображение проблемы карты

НастройкаОт lon_0 до любого положительного числа получается перевернутая карта, в то время как от 0 или отрицательных чисел получается правильная карта.Lon_0 должен просто устанавливать центральную долготу построенной карты и не должен иметь такого поведения, поэтому я не уверен, что происходит.Кто-нибудь видел такое поведение раньше или есть предложения по его исправлению? Я мог бы изменить свой код, чтобы обойти его, но я бы предпочел, чтобы все работало правильно.

Я использую python3.7.3.Я попытался обновить базовую карту с помощью команды "conda install -c anaconda basemap", но она сообщает, что базовая карта уже обновлена.

Вот код.Он идентичен коду, связанному выше, но с lon_0, установленным в 180.

from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
# lon_0 is central longitude of projection.
# resolution = 'c' means use crude resolution coastlines.
m = Basemap(projection='robin',lon_0=180,resolution='c')
m.drawcoastlines()
m.fillcontinents(color='coral',lake_color='aqua')
# draw parallels and meridians.
m.drawparallels(np.arange(-90.,120.,30.))
m.drawmeridians(np.arange(0.,360.,60.))
m.drawmapboundary(fill_color='aqua')
plt.title("Robinson Projection")
plt.show()

Когда я запускаю код, единственным выходом является это, которое кажется несвязанным:

map_test.py: 36: MatplotlibDeprecationWarning: Функция dedent устарела в Matplotlib 3.1 и будет удалена в 3.3.Вместо этого используйте inspect.cleandoc.m = базовая карта (проекция = 'робин', lon_0 = 180, разрешение = 'c')

Есть идеи?

...