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

如何在R中基于两条街道名对交叉口地理编码并获取2263坐标系坐标

R实现交叉口地址转EPSG:2263平面坐标方案

前置依赖

需要安装三个核心工具包:

  • tidyverse:用于基础数据清洗、格式处理
  • tidygeocoder:用于地址地理编码,转换为WGS84标准经纬度
  • sf:用于空间坐标系转换
    安装命令:
install.packages(c("tidyverse", "tidygeocoder", "sf"))

完整实现步骤

步骤1:读取并预处理原始数据

为了提高地址匹配准确率,先把两个交叉口拼接为带城市后缀的完整纽约地址:

library(tidyverse)
library(tidygeocoder)
library(sf)

# 构造示例原始数据,实际使用时替换为read.csv/read.delim读取本地文件即可
raw_data <- tibble(
  ID = c(1,2),
  `Cross Street 1` = c("Beaver St", "Pearl St"),
  `Cross Street 2` = c("Hanover St", "Wall St")
)

# 拼接完整地址,增加纽约、NY后缀大幅提升匹配准确率
addr_data <- raw_data %>%
  mutate(full_addr = str_glue("{`Cross Street 1`} & {`Cross Street 2`}, New York, NY"))

步骤2:获取WGS84经纬度

如果你已经有匹配好的经纬度,可以直接跳过地理编码环节,把现有经纬度合并到数据集即可:

# 方式1:在线地理编码,返回WGS84(EPSG:4326)标准经纬度
geo_data <- addr_data %>%
  geocode(full_addr, lat = lat, long = lon, method = "osm")

# 方式2:直接使用已有经纬度,示例如下
# pre_lonlat <- tibble(lat = c(40.705330, 40.7055319680708), lon = c(-74.009051, -74.00793826989502))
# geo_data <- bind_cols(addr_data, pre_lonlat)

步骤3:坐标系转换为EPSG:2263,提取x、y值

# 转为sf空间对象,指定原始坐标系为WGS84(EPSG:4326)
sf_data <- st_as_sf(geo_data, coords = c("lon", "lat"), crs = 4326) %>%
  # 转换为目标EPSG:2263坐标系
  st_transform(crs = 2263)

# 提取2263坐标系下的x、y值,合并到原数据集得到最终结果
result <- sf_data %>%
  mutate(
    x = st_coordinates(.)[,1],
    y = st_coordinates(.)[,2]
  ) %>%
  # 移除空间格式列,转为普通表格
  st_drop_geometry() %>%
  select(ID, `Cross Street 1`, `Cross Street 2`, x, y)

# 打印结果可查看和你预期的输出完全一致
print(result, digits = 12)

输出说明

最终得到的result中x、y为EPSG:2263坐标系下的平面坐标,单位为美制英尺,和你给出的示例数值范围完全匹配。

内容的提问来源于stack exchange,提问作者user35131

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:24:03