построить стрелки в многоугольнике SF - PullRequest
0 голосов
/ 24 января 2019

Как правильно построить кривую стрелку от одного центроида к другому центроиду многоугольников в R.

Я пытался изогнуть стрелку из диаграммы. но его нанесение стрелок в некоторых других местах может быть связано с другой системой кординатов.

library(sf)
nc <- st_read(system.file("shape/nc.shp", package="sf"))
plot(st_geometry(nc))
nc$centroid<- st_centroid(nc$geometry)
plot(nc$centroid, add=T, pch=3, col="red")

enter image description here

1 Ответ

0 голосов
/ 24 января 2019

Исходя из вашего примера.Чтобы упростить, просто используйте первые четыре многоугольника:

> plot(st_geometry(nc)[1:4])

Получите четыре многоугольника центроидов.Не обращайте внимания на предупреждение:

> xy = st_coordinates(st_centroid(nc)[1:4,])
Warning messages:
1: In st_centroid.sf(nc) :
  st_centroid assumes attributes are constant over geometries of x
2: In st_centroid.sfc(st_geometry(x), of_largest_polygon = of_largest_polygon) :
  st_centroid does not give correct centroids for longitude/latitude data

И нарисуйте несколько изогнутых стрелок между центроидами:

> curvedarrow(from=xy[2,],to=xy[1,],lcol="red", curve=.2)
> curvedarrow(from=xy[4,],to=xy[1,],lcol="red", curve=.2)

, что он изогнулся от графика, поэтому сгладьте его немного:

> curvedarrow(from=xy[4,],to=xy[1,],lcol="red", curve=.12)

enter image description here

Я добавил все центроиды к этому графику, чтобы вы могли видеть, что он рисует кривые от центроида к центроиду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...