从多边形的侧面绘制等距点 [英] Drawing equidistant points from the sides of a polygon
问题描述
我正在绘制具有以下顶点的多边形
I am drawing a polygon with the following vertices
x y
-0.02208709 -0.039161304
0.01184081 -0.020268029
0.04578401 -0.001351904
0.02210236 0.039176396
-0.01185226 0.020252146
-0.04578784 0.001352696
使用以下代码
plot(x,y)
polygon(x,y)
points(mean(x),mean(y),col="red")
现在,我想沿着多边形的侧面绘制50个等距的点.有什么建议怎么做吗?
Now I want to plot 50 equally-spaced points along the sides of polygon. Any suggestion how to do it?
推荐答案
您可以使用sp
包中的spsample
来完成此操作.
You can do this with spsample
from the sp
package.
首先,我们将加载库并读取您的顶点.
First we'll load the library and read in your vertices.
library(sp)
xy <- read.table(text='x y
-0.02208709 -0.039161304
0.01184081 -0.020268029
0.04578401 -0.001351904
0.02210236 0.039176396
-0.01185226 0.020252146
-0.04578784 0.001352696', header=TRUE)
现在从顶点创建一个SpatialLines
对象.这有点混乱-如果遇到问题,请参见?SpatialLines
和?`SpatialLines-Class`
.
Now create a SpatialLines
object from the vertices. This is a bit messy - see ?SpatialLines
and ?`SpatialLines-Class`
if you get stuck.
l <- SpatialLines(list(Lines(Line(rbind(xy, xy[1, ])), ID=1)))
然后采样点并使用as.data.frame(pts)
或coordinates(pts)
强制转换为data.frame
.
Then sample the points and coerce to a data.frame
with as.data.frame(pts)
or coordinates(pts)
.
pts <- spsample(l, 50, type="regular")
coordinates(pts) # only the head shown here
## x y
## [1,] -0.019343310 -0.03763339
## [2,] -0.014987452 -0.03520776
## [3,] -0.010631594 -0.03278213
## [4,] -0.006275735 -0.03035651
## [5,] -0.001919877 -0.02793088
## [6,] 0.002435981 -0.02550525
plot(l)
points(pts, pch=20)
这篇关于从多边形的侧面绘制等距点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!