Turf JS Как получить LineString из Polygon, уменьшив значение применяемого буфера - PullRequest
1 голос
/ 21 января 2020

Я создал буферизованный многоугольник для сегмента LineString, используя следующее:

const bufferedPolygon = turf.buffer(featureGeoJson, bufferVal, 'kilometers');

Есть ли способ обработать исходную LineString featureGeo Json из доступных в настоящее время bufferedPolygon и bufferVal?

Я пытался использовать метод polygonToLine от turf, но я все еще получаю многоугольник, который совпадает с вышеприведенным многоугольником с тип обновлен до lineString

1 Ответ

0 голосов
/ 24 марта 2020

Ну, turf.buffer создает новый объект из предоставленного и не отслеживает его предыдущее состояние. Кроме того, как вы сказали, polygonToLine, а также polygonToLineString будут преобразовывать только границу многоугольника в строку - они не функционируют как обратное buffer.

Что turf.buffer действительно сохраняет properties оригинальной функции. Таким образом, мы можем сохранить исходную геометрию в свойствах строки:

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":[...]
  }
}
...