如何在飞镖/扑动中计算 GeoJson 几何区域

How to compute a GeoJson geometry area in dart / flutter

我正在构建一个 flutter 移动应用程序,我需要计算一些 GeoJson 几何图形的面积。

假设我们有一个类似 GeoJson 的对象:

final geo = {
    "type": "Polygon",
    "coordinates": [[
        [-122.085, 37.423],
        [-122.083, 37.423],
        [-122.083, 37.421],
        [-122.085, 37.421],
        [-122.085, 37.423]
    ]]
};

假设投影是EPSG:4326,我们如何使用flutter或dart得到几何体的实际面积?

尝试使用 dart-simple-features,但这不再维护并且需要 SDK < 2.0.0。

我想到的另一个选择是将某些 JavaScript 库与 flutter_webview_plugin 结合使用,但是天啊……这似乎有点过分了!

也有可能使用platform-specific代码,但为了开发经验:尽可能避免在多个平台上进行测试...

有什么想法吗?或推荐?

好的,将近一个星期没有回复...创建了我的第一个飞镖包:

https://pub.dev/packages/area

使用简单:

import 'package:area/area.dart';

main() {
  const world = {
    'type': 'Polygon',
    'coordinates': [
      [
        [-180, -90],
        [-180, 90],
        [180, 90],
        [180, -90],
        [-180, -90]
      ]
    ]
  };

  print("The world area is: ${area(world)} m²");
}

随意使用,讨厌或喜欢 ;)

您可以使用 geojson_vi:

const world = {
  'type': 'Polygon',
  'coordinates': [
    [
      [-180, -90],
      [-180, 90],
      [180, 90],
      [180, -90],
      [-180, -90]
    ]
  ]
};
final geoJSONPolygon = GeoJSONPolygon.fromMap(world);
print(geoJSONPolygon.area);