You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将NYC PLUTO Shapefile与含经纬度的DataFrame合并?

解决NYC PLUTO Shapefile与经纬度DataFrame的空间合并问题

嘿,刚好我之前处理过类似的PLUTO数据合并需求,给你一步步拆解可行的实现方法:

核心思路

你需要把经纬度数据转换成空间点对象,统一和PLUTO数据的坐标系,再通过空间连接把两个数据集关联起来——这是sf包处理空间合并的标准流程。


具体步骤&代码示例

假设你的经纬度DataFrame名为df,包含lon(经度)和lat(纬度)两列:

  1. 把普通DataFrame转成sf点对象
    首先要告诉sf包你的经纬度是WGS84坐标系(也就是常用的GPS坐标,EPSG:4326):

    library(sf)
    
    # 转换为空间点对象
    point_sf <- st_as_sf(df, coords = c("lon", "lat"), crs = 4326)
    
  2. 统一坐标系
    你的PLUTO数据用的是LCC投影(从proj4string能看出来),所以需要把点对象转换成和它一样的坐标系:

    # 获取PLUTO数据的坐标系
    pluto_crs <- st_crs(mydf)
    # 转换点对象的坐标系
    point_sf_transformed <- st_transform(point_sf, pluto_crs)
    
  3. 执行空间连接
    用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,提问作者ℕʘʘḆḽḘ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:27:57