繁体   English   中英

R中的lat长点簇的多边形

[英]polygon from cluster of lat long points in R

我试图从将接触所有外部点的点的边界群集中创建多边形。 任何改善我的代码的帮助将不胜感激。

library(dplyr)
library(sf)
    df<- read.table(text ="lon  lat
    74.03687    30.17482
    74.23605    30.23773
    74.24127    29.95988
    74.29211    30.07575
    74.25612    30.17687
    74.15972    30.06242
    74.06484    30.11025
    74.36046    30.02749
    74.08133    30.01889
    74.26168    30.16881
    73.91083    30.01378
    74.00881    30.07585
    74.40638    29.97712
    74.34974    30.22231
    74.20501    30.11133
    74.18108    30.01113
    74.00717    30.11362
    73.94891    30.03807
    74.18977    30.14367
    74.18857    30.13621
    74.19862    30.15222
    74.19376    30.13425",header= T)
    polygon <- df %>%
      st_as_sf(coords = c("lon", "lat"), crs = 4326) %>%
      summarise(geometry = st_combine(geometry)) %>%
      st_cast("POLYGON")
    plot(polygon)  

需要像单个多边形中的蓝线这样的输出。 在此处输入图片说明

我建议将concaveman包装用于此任务:

library(concaveman)

pnts <- df %>%
  st_as_sf(coords = c("lon", "lat"), crs = 4326)
polygon <- concaveman(pnts)

plot(polygon, reset = FALSE)
plot(pnts, add = TRUE)

在此处输入图片说明

如下代码:

plot(df, type='n')
polygon(df)
chx <- chull(df)
chx <- rbind(df = df[chx, ], df[chx[1], ])
lines(chx, col='blue', lwd=4)

将产生以下情节:

在此处输入图片说明

或删除polygon(df)以获得:

在此处输入图片说明

希望对你有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM