Я знаю, что этот вопрос задан раньше, однако он фокусируется на Cartopy.
Моя текущая работа рассматривает феномен над датой и будет работать над ящиком в Тихоокеанском океане, который пересекает дату. Управление и построение этих данных было проблемой, так как значения варьировались от 179 до -179 по одному индексу.
Я могу легко подобрать мои широты
lat_mask=[(lat<=20)&(lat>=-20)] #Tropics +-20* only
lat_masked=lat[lat_mask]
Что хорошо работает.
lon=np.add(lon,180) #Reset longitudes to 0-360 from -180 to 180
lon_mask=[(lon>=110)&(lon<=300)]
также отлично работает... НО для абсолютно противоположного региона, на который я смотрю. Но регион, который я хочу:
lon_mask=[(lon<=110)|(lon>=300)]
не работает. Я могу делать их отдельно и составлять графики для каждого региона на восток и запад от даты, но я хочу, чтобы они объединены в один набор данных/график. Так что у меня есть маска для [300-360 0-110], которую я могу построить как одно изображение.
Я ищу умный способ хранения информации для удобства и планируемости.
Я пытался разобраться, как переиндексировать все это, но у меня болит голова. Я ищу надежное решение, так как оно будет использоваться регулярно. Первоначально я думал, что это проблема matplotlib, но я думаю, что это способ хранения моих данных.
EDIT: Изменен и | - но теперь эта проблема возникает.
Я чувствую
lon= np.roll(lon,len(lon)/2)
или что-то могло бы помочь эффективно перемещать дату в другое место, но я не могу это решить.
ура
Используется XArray:
dataset= dataset.assign_coords(lon=(dataset.lon % 360)).roll(lon=(dataset.dims['lon'] // 2))
lon_mask=[(lon<=110)|(lon>=300)]
- это то, что вы хотите. Долгота либо меньше 110, либо больше 300. Разумеется, число не может быть меньше 110 и больше 300 одновременно.
((lon>=0)&(lon<=110))|((lon>=300)&(lon<=360)