如何将NYC PLUTO Shapefile与含经纬度的DataFrame合并?
解决NYC PLUTO Shapefile与经纬度DataFrame的空间合并问题
嘿,刚好我之前处理过类似的PLUTO数据合并需求,给你一步步拆解可行的实现方法:
核心思路
你需要把经纬度数据转换成空间点对象,统一和PLUTO数据的坐标系,再通过空间连接把两个数据集关联起来——这是sf包处理空间合并的标准流程。
具体步骤&代码示例
假设你的经纬度DataFrame名为df,包含lon(经度)和lat(纬度)两列:
把普通DataFrame转成sf点对象
首先要告诉sf包你的经纬度是WGS84坐标系(也就是常用的GPS坐标,EPSG:4326):library(sf) # 转换为空间点对象 point_sf <- st_as_sf(df, coords = c("lon", "lat"), crs = 4326)统一坐标系
你的PLUTO数据用的是LCC投影(从proj4string能看出来),所以需要把点对象转换成和它一样的坐标系:# 获取PLUTO数据的坐标系 pluto_crs <- st_crs(mydf) # 转换点对象的坐标系 point_sf_transformed <- st_transform(point_sf, pluto_crs)执行空间连接
用st_join函数把点和对应的PLUTO税区关联起来。如果是要找每个点落在哪个税区里,用st_within作为连接条件最准确:# 空间合并:每个点匹配对应的PLUTO税区数据 merged_data <- st_join(point_sf_transformed, mydf, join = st_within)
额外注意事项
- 确认你的经纬度列顺序是
lon(x轴)在前,lat(y轴)在后,不然转换出来的点会跑到错误的位置 - 如果有些点不在曼哈顿范围内,合并后对应的PLUTO字段会显示
NA,你可以用st_filter先筛选出在PLUTO数据边界内的点,或者后续手动处理这些NA值 - 如果你需要反向合并(比如给PLUTO多边形匹配对应的点数据),只需要调换
st_join里两个对象的顺序,再根据需求调整连接条件(比如st_intersects)
内容的提问来源于stack exchange,提问作者ℕʘʘḆḽḘ
相关产品推荐
相关产品推荐

