Как я могу выполнить расчет расстояния в 3D с помощью библиотеки простых функций R `sf`?

Я только недавно начал использовать симпатичный и относительно новый library(sf). Приятно видеть, что точки и линии могут иметь координаты Z. Например:

> st_linestring(rbind(c(0,0,0),c(1,1,1)))
LINESTRINGZ(0 0 0, 1 1 1) 

Однако кажется очевидным, что вычисления с использованием объектов с информацией Z проецируют все в плоскость XY:

# I wish this returned POINTZ(0.5 0.5 0.5)...
> st_centroid(st_linestring(rbind(c(0,0,0),c(1,1,1))))
POINT(0.5 0.5)

# I wish this returned 1.0...
> st_distance(st_linestring(rbind(c(0,0,0),c(1,1,1))), 
st_linestring(rbind(c(2,0,2),c(0,2,2))))
     [,1]
[1,]    0

Как я могу выполнять операции, используя координату Z, не прокручивая собственную?

(Я предполагаю, что либо я что-то упускаю из-за непонимания, либо библиотека настолько новая, что эти операции просто еще не реализованы.)


person jtolle    schedule 22.05.2017    source источник
comment
Не уверен, но я думаю, вам нужно сначала установить crs, описывающую трехмерную проекцию.   -  person yeedle    schedule 22.05.2017
comment
@yeedle, спасибо. Если я добавлю CRS, то получу то же самое. Я предполагаю, что такие операции, как центроид и расстояние, должны быть определены на карте, а не в трехмерном пространстве.   -  person jtolle    schedule 22.05.2017


Ответы (1)


Прямо сейчас вы не можете без написания (или передачи в качестве аргумента st_distance) вашей собственной функции расстояния.

person Edzer Pebesma    schedule 02.06.2017