我使用以下命令为 LineString 段创建了一个缓冲多边形:
const bufferedPolygon = turf.buffer(featureGeoJson, bufferVal, '公里');
有什么方法可以从现在可用的 bufferedPolygon 和 bufferVal 处理回原始 LineString featureGeoJson 吗?
我尝试使用polygonToLine方法,但我仍然得到一个与上面的缓冲多边形相同的多边形,其中 type 更新为 lineString
最佳答案
好吧,turf.buffer
从提供的对象创建一个新对象,并且不跟踪其先前的状态。另外,正如您所说,polygonToLine
以及 polygonToLineString
只会将多边形边界转换为线字符串 - 它们不会起到 的反作用。 >缓冲区
。
turf.buffer 所做的就是保留原始特征的属性。所以我们可以做的就是将原始几何图形保存到线串的属性中:
const linestring1 = turf.lineString([
[-24, 63],
[-23, 60],
[-25, 65],
[-20, 69]
], {
name: 'line 1'
});
linestring1.properties.original_geometry = linestring1.geometry;
const bufferedPolygon = turf.buffer(linestring1, 2, {
units: 'kilometers'
});
从而保留您可以恢复到的原始内容:
{
"type":"Feature",
"properties":{
"name":"line 1",
"original_geometry":{
"type":"LineString",
"coordinates":[[-24,63],[-23,60],[-25,65],[-20,69]]
}
},
"geometry":{
"type":"Polygon",
"coordinates":[...]
}
}
关于javascript - TurfJS 如何从 Polygon 获取 LineString 减少应用的缓冲区值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59839007/