問題描述:現在我有一箇中國地圖的shp檔案和一個全球降水資料的csv檔案,我只想要四川省份的降水資料,該如何得到。
點選檢視程式碼
import geopandas as gpd
import pandas as pd
shp = gpd.read_file(r'.\中華人民共和國\中華人民共和國.shp',encoding='utf-8') # encoding 設定為utf-8保證中文可讀
# 將csv檔案轉換為GeoDataFrame格式
gdf_csv = gpd.GeoDataFrame(
csv, geometry=gpd.points_from_xy(csv.LON, csv.LAT))
gdf_csv.crs = "EPSG:4326" # 設定csv中的地理座標,需要和shp相同
# 選擇特定省份的SHP檔案,這裡shp檔案中name欄位是省份
province_name = '四川省'
province_shp = shp[shp['name'] == province_name]
# 返回省份內的點
data= gpd.sjoin(gdf_csv, province_shp, how='inner', predicate='within')
# 將篩選後的結果儲存為新的CSV檔案,這裡重新索引了,防止影響其他資料
data.reset_index(drop=True).to_csv(r'.\四川省資料.csv', index=False)