重新排序 LineString 坐标 GeoJson

reorder LineString coordinates GeoJson

我有一大组由许多 LineString 组成的 GeoJson 数据。我需要重新排序所有 LineString 的坐标,以便尽可能少地出现锯齿形。所以例如我有这组坐标:

[
      [
        -149.858345,
        61.217461,
        0
      ],
      [
        -151.544282,
        59.646368,
        0
      ],
      [
        -124.099861,
        43.982118,
        0
      ],
      [
        -151.291694,
        60.689824,
        0
      ]
]

结果是这一行

应该像这样重新排序

[
     [
        -149.858345,
        61.217461,
        0
      ],
      [
        -151.291694,
        60.689824,
        0
      ],
      [
        -151.544282,
        59.646368,
        0
      ],
      [
        -124.099861,
        43.982118,
        0
      ]
]

呈现这个

这是一条更明智的路线。

我意识到 "sensible" 在这里是主观的,另一种看待它的方式是,如何重新排列坐标以获得最直线?

这是我可以使用 turf.js 的东西吗?我查看了文档,但找不到合适的功能(或者我想的方式不对)

提前致谢!

Turf 没有为此内置任何内容,如果您是个人,这往往是具有常识性解决方案但难以对计算机定义的问题之一。也就是说,我将如何解决这个问题:

另一种方法是:

  • 使用turf-concave或concaveman在点
  • 周围生成concave hull
  • 遍历船体的线段,找出最长的线段并将其移除,使多边形成为 LineString。