从多边形的侧面绘制等距点 [英] Drawing equidistant points from the sides of a polygon

查看:140
本文介绍了从多边形的侧面绘制等距点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在绘制具有以下顶点的多边形

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆