爱尔兰网格参考纬度和经度

问题描述 投票:0回答:2

我正在研究已列入清单的建筑物(非常古老的建筑物),并且有一个数据框,其中包含使用爱尔兰网格参考系统的位置。

其中之一的示例是:C5288 2028

我需要一种方法将此列表转换为纬度和经度,但在我的一生中,我找不到一种简单的方法来让包将爱尔兰网格转换为纬度和经度。

通过谷歌搜索,看起来爱尔兰电网参考号是基于 CRS 29903,但我可能是错的。

假设数据帧称为“NI”,网格引用变量称为“TxtIGRef”,任何人都可以想到任何空间包,例如 SF,可以从所述引用转换为纬度/经度?

如果您能提供任何帮助,我将非常感激。

r spatial latitude-longitude r-sf
2个回答
0
投票

幸运的是,我设法找到了一些过去已经处理过这个问题的好心人,因此能够帮助我编写一些代码。

这必须分两个阶段处理。首先,网格参考必须转换为东距和北距,然后您可以将其转换为纬度/经度。

您需要 geosphere 和 proj4 软件包。

    library(geosphere)
library(proj4)

# Example data
Northern_Ireland <- data.frame(
  TxtIgRef = c("C5288 2028", "C5488 2018"),
  stringsAsFactors = FALSE)

# Add blank Latitude and Longitude columns

Northern_Ireland$Latitude <- NA
Northern_Ireland$Longitude <- NA

# Define the projection for Irish Grid Reference

proj <- "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=200000 +y_0=250000 +ellps=airy +datum=ire65 +units=m +no_defs"

# Function to convert Irish Grid Reference to lat/lon

igr_to_lat_lon <- function(igr) {
  
# Split the Irish Grid Reference into easting and northing parts
  
parts <- strsplit(igr, " ")[[1]]
easting <- as.numeric(substr(parts[1], 2, nchar(parts[1])))
northing <- as.numeric(parts[2])

# Convert Irish Grid Reference to lat/lon

lat_lon <- project(cbind(easting, northing), proj, inverse = TRUE)

return(lat_lon)
}

# Loop through the data frame and populate Latitude and Longitude columns
for (i in 1:nrow(Northern_Ireland)) {
igr <- Northern_Ireland$TxtIgRef[i]
lat_lon <- igr_to_lat_lon(igr)
Northern_Ireland$Latitude[i] <- lat_lon[2]
Northern_Ireland$Longitude[i] <- lat_lon[1] }

0
投票

有关信息 igr 是一个新的 r 软件包,专门用于在爱尔兰和北爱尔兰使用的爱尔兰网格参考之间进行转换。请参阅 st_igr_as_sf() 中的示例,了解如何转换为纬度/经度 (WGS84)。

© www.soinside.com 2019 - 2024. All rights reserved.