Python筛选落在shp各个多边形中的格点数据

问题

一个含有一个及以上多边形的地理空间shp文件,一个含有经度、纬度、参数数据的csv文件。需要筛选 落在shp各个多边形中的 格点数据,并且将 落在shp各个多边形中的 每个格点数据 都显示出来。

思路

  • 将csv文件中的经度、纬度信息处理成为地理空间点信息;
  • 将csv的地理空间点与shp的地理空间多边形进行空间连接,筛选出落在shp各个多边形中csv点数据;
  • 将结果保存到新csv文件中。


代码

import geopandas as gpd
import pandas as pd
from shapely.geometry import Point

# Load the shapefile # 打开shp
shapefile_path = "/home/shp/2015county.shp"
gdf = gpd.read_file(shapefile_path)

# Load the CSV file # 打开csv
csv_directory ="/home/O3/processed_lonlat_O3_D10K_2000.csv"
df = pd.read_csv(csv_directory)

# define how to create geometry point # 定义经纬度几何空间点创建方式
def create_point_geometry(row):
    longtitude = row['longitude']
    latitude = row['latitude']
    return Point(longtitude, latitude)

# Create Point geometries from latitude and longitude # 创建csv的经纬度几何空间点
geometry = df.apply(create_point_geometry, axis=1)
# Convert DataFrame to GeoDataFrame # 将几何空间点转为地理空间点
gdf_points = gpd.GeoDataFrame(df, geometry=geometry)
# Set the coordinate reference system (CRS) if known # 设置坐标参考系
gdf_points.crs = {'init': 'epsg:4326'}
# Transform the CRS if needed (to match shapefile CRS) # 按需转换坐标参考系
gdf_points = gdf_points.to_crs(gdf.crs)

# Perform spatial join # shp地理空间多边形与csv地理空间点进行空间连接
points_in_polygons = gpd.sjoin(gdf_points, gdf, how="inner", op='within')
# Calculate mean of MDA8 grouped by shapefile polygons # 按需计算落在shp每个多边形中的csv地理空间点的目标数据的平均值
mean_data = points_in_polygons.groupby('区划码')['O3'].mean()

# Define the output directory for the new CSV files
output_file ="/home/O3/processed_county_O3_2000.csv"
# Save the spatially joined data to a new CSV file
points_in_polygons.to_csv(output_file, index=False)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值