私はNUTITEQGoogleApi
に尋ねます。これをで実行する方法は知っていますcomputeArea()
が、 には何も見つかりませんでしたNutiteq sdk/snapshot
。
前もって感謝します。
ps面積を計算する多くの方法を知っていますが、独自のものを呼び出したいですNutiteq
編集:
組み込みのメソッドはありません。Jaak の迅速な回答に感謝します。そのため、2 つのメソッドを調査して見つけました。どちらも WSG84 Projection の下にあります。両方を比較する小さなプログラムを開発し、ポリゴンの面積を計算する KML ツールと比較しました。
そして、ニューハンプシャー大学のkmlツールでの結果
12197.38184
import java.lang.Math.*;
import net.sf.geographiclib.*;
public class ComputeAreaTest {
private static double[][] moorwiese_coords = {{12.925634f,48.427168f},
{12.926825f,48.427217f},
{12.926788f,48.428385f},
{12.926069f,48.428374f},
{12.925431f,48.42825f},
{12.925624f,48.427192f},
{12.925634f,48.427168f}};
protected static double computeArea() {
double area=0.0;
double earthRadius = 6378137.0f;
int size = moorwiese_coords.length;
if (size > 2) {
double[] p1 = new double[2];
double[] p2 = new double[2];
for (int i=0; i<size-1; i++) {
p1 = moorwiese_coords[i];
p2 = moorwiese_coords[i+1];
area += Math.toRadians(p2[0] - p1[0]) * (2 +
Math.sin(Math.toRadians(p1[1]) ) + Math.sin(Math.toRadians(p2[1])) );
}
area = area * earthRadius * earthRadius / 2.0;
}
return area;
}
protected static double computeAreaWithGeographicLib() {
int size = moorwiese_coords.length;
PolygonArea p = new PolygonArea(Geodesic.WGS84, false);
try {
for (int i=0;i<size;i++) {
p.AddPoint(moorwiese_coords[i][4], moorwiese_coords[i][0]);
}
}
catch (Exception e) {}
PolygonResult r = p.Compute();
return r.area;
}
public static void main(String[] args) {
double areaGeoLib = computeAreaWithGeographicLib();
double area = computeArea();
System.out.println("Area: " + (-1)*area + "\nArea(GeoLib): "+areaGeoLib);
}
}
Output
Area: 12245.282587113787
Area(GeoLib): 12254.95547034964
正確な使用にはあまり適していないことがわかりました (はい、0.5% 未満のエラーは多くの環境で不正確かもしれません) が、不規則なポリゴンの面積を計算する方法を学ぶのに役立ちます.