我正在研究已列入清单的建筑物(非常古老的建筑物),并且有一个数据框,其中包含使用爱尔兰网格参考系统的位置。
其中之一的示例是:C5288 2028
我需要一种方法将此列表转换为纬度和经度,但在我的一生中,我找不到一种简单的方法来让包将爱尔兰网格转换为纬度和经度。
通过谷歌搜索,看起来爱尔兰电网参考号是基于 CRS 29903,但我可能是错的。
假设数据帧称为“NI”,网格引用变量称为“TxtIGRef”,任何人都可以想到任何空间包,例如 SF,可以从所述引用转换为纬度/经度?
如果您能提供任何帮助,我将非常感激。
幸运的是,我设法找到了一些过去已经处理过这个问题的好心人,因此能够帮助我编写一些代码。
这必须分两个阶段处理。首先,网格参考必须转换为东距和北距,然后您可以将其转换为纬度/经度。
您需要 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] }
有关信息 igr 是一个新的 r 软件包,专门用于在爱尔兰和北爱尔兰使用的爱尔兰网格参考之间进行转换。请参阅 st_igr_as_sf() 中的示例,了解如何转换为纬度/经度 (WGS84)。