首页 > 解决方案 > 如何在飞镖/颤振中计算 GeoJson 几何区域

问题描述

我正在构建一个颤动的移动应用程序,我需要计算一些 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,我们如何使用颤振或飞镖获得几何的实际面积?

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

我想到的另一个选择是结合使用一些 JavaScript 库和flutter_webview_plugin,但是哦,我的……这似乎有点矫枉过正!

也有可能使用特定于平台的代码,但为了开发经验:如果可能的话,让我们避免在多个平台上进行测试......

有任何想法吗?还是推荐?

标签: flutterdartgeojsonarea

解决方案


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

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²");
}

随意使用,恨或爱;)


推荐阅读