2017-05-18 7 views
0

AnyLogic GISRegionsのコレクションを地域別にソートしようとしています。この面積は、GISRegion.area(units)を使用して計算されます。これは十分に簡単です。しかし、私が使用している領域は都市規模であり、このメソッドはdoubleを返します。これは、オーバーフローの問題を引き起こすことが表示されます。AnyLogic:GISRegion.area()のダブルオーバーフローを補償する

enter image description here

私は自分のコードに何かをやっているとは思わないので、おそらくこれはAnyLogic問題です。簡略化のために、並べ替えの手順ではなく各地域の領域を印刷する行を追加しました:

// For each region of the Australian Capital Territory, print its area in km^2: 
areas.forEach(next -> traceln(""+next.name+": " + next.gisRegion.area(SQ_KILOMETER))); 

誰もこの問題が発生しましたか?どうやって周りを回ったのですか?

AnyLogic以外のユーザーの場合、各地形内にすべての緯度経度があります。これらの点を使ってどのように面積を計算すればよいですか?

答えて

1

[本当に完全な答えではありませんが、アイデアはコメントには長すぎます。]

AnyLogicのサポートリクエストは、100%のバグだと思われます。これはちょうど基本的な「面積計算」関数なので、あなたが持っている頂点の緯度/経度から別の方法で計算し、getPoints()を経由して得ることができます。 GISRegion

これは単なるN面のポリゴンなので、GIS投影を考慮していないにもかかわらず、それを計算できる標準Javaライブラリが存在する必要があります(導入できるエラーのレベルは不明です)。あなたはオープンGISライブラリが後者に対処することを期待しています。 GISRegionはOpenMap標準(?)形式のグラフィックを作成する方法がcreateOMGraphicObject()であるため、他のライブラリで使用できる標準形式であれば便利です。

計算を実行すると主張するthis GIS StackOverflow questionに対するglennonの回答にはコードがあります(または、fmarkの回答と同じようにPostGISにフックできる)。

+0

これは私ができるようになるほど良いと思われます - ありがとう! –

関連する問題