问题描述:现在我有一个中国地图的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)