2017-02-10 2 views
0

Я пытаюсь поместить синие точки с Северного полюса вниз по первому меридиану (долгота = 0), но вместо этого увидеть точки, идущие вниз по дате (долгота = 180). Код:долгота на 180 градусов с картографической орфографией и поворотным полюсом

#!/usr/bin/env python 
import matplotlib.pyplot as plt 
import cartopy.crs as ccrs 
Lon = 0 
ax = plt.axes(projection=ccrs.Orthographic(central_latitude=70, 
              central_longitude=Lon)) 
ax.set_global() 
vector_crs = ccrs.RotatedPole(pole_latitude=90, pole_longitude=Lon) 
ax.plot([Lon, Lon, Lon, Lon, Lon, Lon], # longitude 
     [ 90, 80, 70, 60, 50, 40], # latitude 
     'bo', markersize=5, transform=vector_crs) 
ax.stock_img() 
plt.show() 

enter image description here

Вероятно, что-то связано с преобразованиями, но я не понял, что. Картографическая версия 0.14.2, Python 3.6.

ответ

2

Я думаю, что проблема исходит от проекции, которое вы определили преобразование:

ax = plt.axes(projection=vector_crs) 
ax.coastlines() 
plt.show() 

transform used as plot projection

Обратите внимание, что этот простой береговые сюжет в вашем преобразования проекции выглядит как пластина Carree сюжет с центральной долготой 180 °. Имея это в виду, давайте взглянем на построение ваших точек данных образца на участке с тарелкой проекции Carree для того, чтобы также попытаться упростить карту вы замышляет:

ax = plt.axes(projection=ccrs.PlateCarree()) 
ax.plot([Lon, Lon, Lon, Lon, Lon, Lon], 
     [ 90, 80, 70, 60, 50, 40], 
     'bo', markersize=5, transform=vector_crs) 
ax.stock_img() 
plt.show() 

transform onto PlateCarree projection

As с вашим примером, точки не появляются там, где мы могли бы ожидать. Наконец, давайте попробуем использовать Латную проекцию Carree в качестве преобразования для точек при построении их на карту в Ортографической:

ax = plt.axes(projection=ccrs.Orthographic(central_latitude=70, 
              central_longitude=Lon)) 
ax.set_global() 
ax.plot([Lon, Lon, Lon, Lon, Lon, Lon], 
     [ 90, 80, 70, 60, 50, 40], 
     'bo', markersize=5, transform=ccrs.PlateCarree()) 
ax.stock_img() 
plt.show() 

PlateCarree transform onto Orthographic plot

Это, кажется, обеспечивает более сюжет, который вы искали.

+0

Спасибо за подробный ответ. Я пока не понимаю связи между проекциями и преобразованиями, но теперь у меня должно быть достаточно, чтобы начать собирать их вместе. – AlDanial

+0

Рад, что это было полезно! Позвольте мне посмотреть, могу ли я помочь с «проецированием» и «трансформировать» тоже ... «Прогнозирование» kwarg, используемое при создании осей, определяет, как будет выглядеть сюжет: график Plate Carree выше выглядит очень сильно по сравнению с орфографическим сюжетом. «Transform» kwarg, используемый при построении данных, определяет систему координат, которая описывает, как местоположение данных отображается на поверхность земли. Затем «transform» определяет, как данные должны быть правильно преобразованы в геолокацию на вашем участке. – DPeterK

Смежные вопросы