目标是将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()
结果
但是如果我注释掉ax.set_extent行(在前面放#号,则结果是一个全局映射。
即使使用边界boxes of PH from here,即[117.17427453、5.58100332277、126.537423944、18.5052273625],焦点仍然是错误的。
解决了。因此,github页面中的边界框是错误的,下面的注释者给出了正确的边界框。
改为使用此
bounds = [114.095214, 126.8072562, 4.2158064, 21.3217806]
读取documentation,格式应为
在给定坐标中设置地图的范围(x0,x1,y0,y1)系统。
结果正确放大,但分辨率较低