javascript - TurfJS 如何从 Polygon 获取 LineString 减少应用的缓冲区值

标签 javascript google-maps-api-3 geojson turfjs

我使用以下命令为 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/

相关文章:

android - 是否可以使用移动谷歌地图传感器获取我当前位置的邮政编码?

iphone - 在 map 上显示谷歌方向 api 响应

google-maps - 向谷歌地图添加许多圆圈

iOS:geojson iOS 访问

geojson - 如何根据 map 范围将 GeoJSON 数据动态加载到 OpenLayers 3.5.0 map 图层中?

javascript - 如何定位和解决多个外部Javascript和CSS引起的冲突?

javascript - 抽象类中用于创建 self 实例的 Typescript 静态方法

javascript - Node.js 中的 createServer 方法

javascript - 如何在单击 body 单击时防止 div 上的 onclick 事件?

javascript - 使用 json 对 openlayers.vector 进行条件