假设我们有一个点(由经度和纬度描述)(WGS84),我们形成SpatialPointDataFrame
(gData.init
)。我想更改投影(变换),然后使用平面坐标使用简单的线点方法估计距离和交点。我使用下面的代码来执行转换。R坐标位保存到数据帧
library(rgeos)
library(sp)
longitude = 22.954638
latitude = 40.617048
gData.init = data.frame(longitude,latitude)
gData.init$id <- as.numeric(rownames(gData.init))
coordinates(gData.init) <- gData.init[c("longitude", "latitude")]
proj4string(gData.init) <- "+proj=longlat +datum=WGS84"
gDataIn2100 <- spTransform(gData.init, CRS("+init=epsg:2100"))
现在我想保存任何数据类型对象的坐标;当我做这个使用下面的代码
我得到最大程度的保留一位小数:
longitude latitude
[1,] 411425.8 4496486
当我打印坐标(我想可以说,我的坐标,更精确)
print(coordinates(gDataIn2100), digits = 12)
然而
然后得到的坐标有所不同:
longitude latitude
[1,] 411425.810118 4496486.37561
对
这个我想原因不同估计一条线,我在使用gDistance
的情况下,并通过使用估算LinkPointMinDistance
我该怎么办错的距离点之间的最小距离的?
你已经有了一个数字问题的答案。可能值得补充的是,如果您正在投影(转换)坐标的唯一原因是计算距离,那么您可以从原始经纬度更准确地做到这一点。例如。请参阅http://stackoverflow.com/questions/32363998/function-to-calculate-geospatial-distance-between-two-points-lat-long-using-r – dww
感谢您的建议。我曾尝试使用dist2Line函数{geosphere},但它的gDistance函数要慢得多。一个职业是它也估计了几个额外的参数(交点)和线的ID。 –