将特定长度的垂直多段线添加到R中的连续多边形

将特定长度的垂直多段线添加到R中的连续多边形,r,geospatial,polygon,spatial,polyline,R,Geospatial,Polygon,Spatial,Polyline,我试图按语法将多条特定长度的垂直多段线添加到R中的连续多边形中。多段线的数量和长度应由用户指定,范围为1到8条多段线,每个连续多边形的长度为5000到10000英尺。如何在R中实现这一点 我可以通过对几个多边形使用mapedit包手动执行此操作,但我想对几千个连续多边形自动执行此过程 # Load required libraries library(mapedit) library(mapview) library(dplyr) library(sp) # Sample polygons a

我试图按语法将多条特定长度的垂直多段线添加到R中的连续多边形中。多段线的数量和长度应由用户指定,范围为1到8条多段线,每个连续多边形的长度为5000到10000英尺。如何在R中实现这一点

我可以通过对几个多边形使用
mapedit
包手动执行此操作,但我想对几千个连续多边形自动执行此过程

# Load required libraries
library(mapedit)
library(mapview)
library(dplyr)
library(sp)

# Sample polygons and polylines
geometry = structure(list(structure(list(structure(c(8.769563, 8.769563, 
                                                     8.770507, 8.770507, 8.769563, 50.815273, 50.815714, 50.815714, 
                                                     50.815273, 50.815273), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", 
                                                                                                          "sfg")), structure(list(structure(c(8.769568, 8.769568, 8.770507, 
                                                                                                                                              8.770507, 8.769568, 50.814852, 50.81527, 50.81527, 50.814852, 
                                                                                                                                              50.814852), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", "sfg"
                                                                                                                                              )), structure(list(structure(c(8.769568, 8.769568, 8.770502, 
                                                                                                                                                                             8.770502, 8.769568, 50.814412, 50.814849, 50.814849, 50.814412, 
                                                                                                                                                                             50.814412), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", "sfg"
                                                                                                                                                                             )), structure(list(structure(c(8.769568, 8.769568, 8.770502, 
                                                                                                                                                                                                            8.770502, 8.769568, 50.814005, 50.814408, 50.814408, 50.814005, 
                                                                                                                                                                                                            50.814005), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", "sfg"
                                                                                                                                                                                                            )), structure(list(structure(c(8.770502, 8.770502, 8.771301, 
                                                                                                                                                                                                                                           8.771301, 8.770502, 50.815273, 50.815717, 50.815717, 50.815273, 
                                                                                                                                                                                                                                           50.815273), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", "sfg"
                                                                                                                                                                                                                                           )), structure(list(structure(c(8.770518, 8.770518, 8.771301, 
                                                                                                                                                                                                                                                                          8.771301, 8.770518, 50.814852, 50.81527, 50.81527, 50.814852, 
                                                                                                                                                                                                                                                                          50.814852), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", "sfg"
                                                                                                                                                                                                                                                                          )), structure(list(structure(c(8.770507, 8.770507, 8.771301, 
                                                                                                                                                                                                                                                                                                         8.771301, 8.770507, 50.814408, 50.814849, 50.814849, 50.814408, 
                                                                                                                                                                                                                                                                                                         50.814408), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", "sfg"
                                                                                                                                                                                                                                                                                                         )), structure(list(structure(c(8.770507, 8.770507, 8.771296, 
                                                                                                                                                                                                                                                                                                                                        8.771296, 8.770507, 50.814005, 50.814405, 50.814405, 50.814005, 
                                                                                                                                                                                                                                                                                                                                        50.814005), .Dim = c(5L, 2L))), class = c("XY", "POLYGON", "sfg"
                                                                                                                                                                                                                                                                                                                                        )), structure(c(8.769794, 8.769783, 50.814785, 50.814076), .Dim = c(2L, 
                                                                                                                                                                                                                                                                                                                                                                                                            2L), class = c("XY", "LINESTRING", "sfg")), structure(c(8.770051, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    8.770035, 50.814785, 50.814069), .Dim = c(2L, 2L), class = c("XY", 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 "LINESTRING", "sfg")), structure(c(8.770271, 8.77026, 50.814781, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    50.814076), .Dim = c(2L, 2L), class = c("XY", "LINESTRING", "sfg"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ))), class = c("sfc_GEOMETRY", "sfc"), precision = 0, bbox = structure(c(xmin = 8.769563, 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ymin = 50.814005, xmax = 8.771301, ymax = 50.815717), class = "bbox"), crs = structure(list(
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               epsg = 4326L, proj4string = "+proj=longlat +datum=WGS84 +no_defs"), class = "crs"), classes = c("POLYGON", 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               "POLYGON", "POLYGON", "POLYGON", "POLYGON", "POLYGON", "POLYGON", 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               "POLYGON", "LINESTRING", "LINESTRING", "LINESTRING"), n_empty = 0L)

# Visualize geometry
mapview(geometry)


我试图通过多边形内部的
spsample
函数创建定期采样点,并通过直线将它们连接起来,但没有成功。非常感谢您的帮助。

这里有一种方法可以创建给定多边形的直线。这可能不是您想要的,因为您的请求非常具体,但希望代码足够通用,您可以修改它

库(sf)
图书馆(purrr)

多边形这里有一种在给定多边形的情况下创建线的方法。这可能不是您想要的,因为您的请求非常具体,但希望代码足够通用,您可以修改它

库(sf)
图书馆(purrr)

你能澄清一下这些线的规格吗?直线上是否有任何约束(除了多边形中的拟合)?这些线应该是随机的吗?全部平行(如您的插图所示)?不生气?还是仅仅是适合你多边形的线条?@Etieneracine。这些线应该平行并适合多边形内部(1英里乘1英里)。根据用户的输入,它们的长度和计数可能会有所不同。每个多边形的垂直边为1英里,因此,如果用户输入的直线长度大于1英里,则该直线将与2个相邻多边形相交。如果直线小于一英里,那么它们可以放在一个多边形内。最后一个约束是多边形的水平边到直线尖端(“北”和“南”)的距离应大于或等于500英尺。希望这是有意义的。谢谢你能澄清一下生产线的规格吗?直线上是否有任何约束(除了多边形中的拟合)?这些线应该是随机的吗?全部平行(如您的插图所示)?不生气?还是仅仅是适合你多边形的线条?@Etieneracine。这些线应该平行并适合多边形内部(1英里乘1英里)。根据用户的输入,它们的长度和计数可能会有所不同。每个多边形的垂直边为1英里,因此,如果用户输入的直线长度大于1英里,则该直线将与2个相邻多边形相交。如果直线小于一英里,那么它们可以放在一个多边形内。最后一个约束是多边形的水平边到直线尖端(“北”和“南”)的距离应大于或等于500英尺。希望这是有意义的。谢谢只要对代码稍加修改,我就能够达到预期的结果。谢谢。我想买一件类似的。您是否还记得您对所选答案所做的修改?谢谢只要对代码稍加修改,我就能够达到预期的结果。谢谢。我想买一件类似的。您是否还记得您对所选答案所做的修改?谢谢