我想画一个多边形周围的一条线,显示的面积,是,完全在5公里内的线。
有点像缓冲区显示的区域,总是距离5公里,从一条线,我想显示一个区域,总是在5公里内的整个线-所以面积将比缓冲区小。
现实的情况是,我们现在有旅行限制,这在一定程度上意味着你必须呆在离家5公里以内。因此,我想画一个地区周围的徒步旅行-如果人的房子在该地区,然后他们可以做的全部步行。问题的一部分是,我甚至不知道这类区域被称为什么。
目前使用的是这样的传单和草皮--但这只是一个蒙面缓冲。
var mask = turf.polygon([[[90, -55], [170, -55], [170, 10], [90, 10], [90, -55]]]);
var polygon = turf.mask(turf.buffer(geojsonLines[0], 5, {
units: 'kilometers'
}),mask);
L.geoJSON(polygon, {
style: function(feature) {
return {
color: "red"
};
}
}).addTo(journey_map);(不是我将如何处理从BBOX延伸超过5公里的轨道--但我会处理这个问题)。缓冲区的图像类似于我想要做的
发布于 2021-08-26 18:18:22
我说得对吗?你希望的每一个点都在一个形状上的5公里以内的区域,而不是在5公里范围内的缓冲区--任何形状的点?
如果是这样的话,我不知道有一个现有的操作来计算它,也不知道它是如何被调用的,但是它似乎很容易计算。
如果你看一条线段A,B,以及从这段中的任何一点C到某个远点D的距离,很容易看到CD小于或等于max(AD, BD)。所以,如果D在距离A和B拐角处5公里以内,它就在AB上所有点的5公里以内。三角形中所有点中5公里以内的点应该在三角形每个角的5公里以内。
这导致了简单的(虽然可能不是很有效)算法:取描述一个公园的轨迹或多边形的线串中的所有顶点,将每个顶点分别缓冲5公里,并将所有生成的圆圈(https://turfjs.org/docs/#intersect)相交。求交的结果是在每个顶点5公里以内,从而在所有点的5km范围内。
一个简单的优化是首先计算形状的凸包-这将简化一个典型的轨迹,减少顶点的数目,以及你需要交叉的圆圈数。
https://stackoverflow.com/questions/68934580
复制相似问题