Я пытаюсь преобразовать векторы, содержащие данные о северном и восточном направлениях, в десятичные градусы, используя R. До сих пор я был в состоянии выполнить пакет rgdal для выполнения проекции, но у меня возникла проблема. Аргументом для зоны UTM должна быть строка из одного символа, но в моих данных есть несколько зон UTM. Есть ли способ использовать функцию rgdal :: SpatialPoints () для установки нескольких зон UTM? Я попытался ввести набор символов и использовать вектор в функции CRS (), но получил предупреждение о том, что использовалась только первая зона.
df<- data.frame(X = c(774869, 771437, 1051883, 524468),
Y = c(414498, 403790, 184967, 779682),
WGS.1984.UTM.Zone = c("57N", "57N", "54N", "59N"))
library(rgdal)
sputm <- SpatialPoints(df[c("X", "Y")], proj4string=CRS("+proj=utm +zone=57N +datum=WGS84"))
spgeo <- spTransform(sputm, CRS("+proj=longlat +datum=WGS84"))
#resultant coordinates are all transformed relative to UTM zone 57N
df$projargs<- paste("+proj=utm +zone=", df$WGS.1984.UTM.Zone, " +datum=WGS84", sep = "")
#trying again with set projargs character strings
spUTM<- SpatialPoints(df[c("X", "Y")], proj4string=CRS(df$projargs))
Предупреждающие сообщения:
1 : In if (! Is.na (projargs)) {: условие имеет длину> 1, и будет использоваться только первый элемент
2: In if (! Is.na (projargs)) {: the условие имеет длину> 1, и будет использоваться только первый элемент
3: В случае если (is.na (projargs)) uprojargs <- projargs else uprojargs <- paste (unique (unlist (strsplit (projargs,: условие имеет длину> 1, и будет использоваться только первый элемент