Как правильно настроить экстент карты в Cartopy? И в UTM 51N, и в Plate Carree результат все еще "увеличен" не в той области. - PullRequest
0 голосов
/ 28 мая 2020

Цель состоит в том, чтобы нанести каждое землетрясение из CSV на стандартную карту Cartopy. Итак, одно землетрясение - это одна фотография. Эти фотографии будут преобразованы в GIF.

Код

import os
os.chdir(r'path')
import matplotlib.pyplot as plt
import pandas as pd
import geopandas as gpd
import cartopy.crs as ccrs
from geopandas import GeoDataFrame
from shapely.geometry import Point

df = pd.read_csv('emscPhilippines2008to2020_5lines.csv')
crs = "epsg:32651" 
geometry = gpd.points_from_xy(df.Longitude, df.Latitude)
gdf = GeoDataFrame(df, crs=crs, geometry=geometry)
proj = ccrs.PlateCarree()
#projutm = ccrs.UTM(51)
ph = gpd.read_file('Provinces.shp')
bounds = ph.total_bounds
for i in range(gdf.shape[0]):
    ax = plt.axes(projection=proj)
    ax.stock_img()
    ax.set_extent(bounds, crs=proj)
    g = gdf.iloc[i].geometry
    date = gdf.iloc[i]['Date']
    time = gdf.iloc[i]['Time_UTC']
    info = (date + " " + time)
    plt.plot(g.x, g.y, marker='o', color='red', markersize=15)
    plt.suptitle('Earthquakes in the Philippines from 2008 to 2020')
    plt.title(info)e
    plt.show()
    #plt.savefig("earthquake{0}.png".format(i))
plt.show()

Результаты

enter image description here

Но если я закомментирую (поставлю # перед) строку ax.set_extent, результатом будет глобальная карта.

enter image description here

Даже если я использую ограничивающие прямоугольники PH отсюда , то есть [117.17427453, 5.58100332277, 126.537423944, 18.5052273625], фокус все равно неправильный.

enter image description here

1 Ответ

0 голосов
/ 28 мая 2020

Решил. Таким образом, список, указанный в shapefile.total_bounds, неправильно отформатирован в соответствии с требованиями ax.set_extent.

Прочтите документацию , и формат должен быть

Установить размер (x0, x1, y0, y1) карты в данной системе координат.

Результат увеличен правильно, но с низким разрешением

enter image description here

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