我正在尝试使用 dd 将两列数据(经纬度坐标)从 dd 转换为 dms;
dd2dms(y, NS = TRUE)
但是当我确实收到错误时
Error in Math.factor(dd) : sign not meaningful for factors
我知道那里有很好的答案可以帮助转换为不同类型的数据,比如这里。然而不幸的是,这并不能解决我的问题,因为我的数据实际上是数字的。
我的数据来自美国人口普查局的 shapefile,可在此处获得。这是我正在使用的代码。
require(rgdal)
UAP=readOGR(dsn = "C:/Directory", layer = "file")
我要转换的列如下所示
INTPTLAT10 INTPTLON10
+40.7185358 -084.0757264
+40.7038198 -084.1723263
所以首先我尝试:
> y = UAP@data$INTPTLAT10
> sapply(y, mode)
[1] "numeric" "numeric" "numeric" "numeric" #etc...
> dd2dms(y)
Error in Math.factor(dd) : sign not meaningful for factors
我尝试了其他几个简单的测试来尝试诊断我的问题所在。
> x=UAP@data[14]
> sapply(x, mode)
INTPTLAT10
"numeric"
> dd2dms(x, NS = TRUE)
Error in Math.data.frame(dd) :
non-numeric variable in data frame: INTPTLAT10
>x = +40.5987
>sapply(x)
[1] "numeric"
>dd2dms(x, NS = TRUE)
[1] 40d35'55.32"N
我需要将这些坐标输入 DMS,以便我可以应用距离公式(这需要使用三角函数,因此它们必须是 DMS 格式)。但我对这个错误从哪里弹出感到困惑。
任何帮助,将不胜感激!这几天我一直在为此苦苦挣扎!