2012-01-10 5 views
3

私はすでに平面内にロードされている巨大な点群を持っています。円と楕円を描き、半径の距離をメートルで表し、円の内側にある点を確認する必要があります。JTSを使って円を描く点

私はすでにwithin()メソッドでポリゴンでこれを行っていますが、ポリゴンの周りのすべての点を指定する必要はなく、円/楕円を描く方法が見つかりません。

JTSでこれを行う方法はありますか、別のJavaライブラリが必要ですか?

答えて

2

ポイントからの距離が半径よりも小さいことを確認することができます。どの点がその中にあるかを知るために円を描く必要はありません。実行時間を短縮するには、距離の2乗と半径の2乗を比較します。不要な平方根演算が不要になります。

省略記号の場合、問題はちょっとだけ難しく、2次式x^2 + k y^2が関係します。

+0

なぜshapeFactory.setNumPoints(32);?どうやって32歳になったの? –

1

私が正しく理解場合は、このようなJTSで円を描くことができますので、あなたは、半径と中心を有する:

public static Geometry createCircle(double x, double y, final double RADIUS) { 
    GeometricShapeFactory shapeFactory = new GeometricShapeFactory(); 
    shapeFactory.setNumPoints(32); 
    shapeFactory.setCentre(new Coordinate(x, y)); 
    shapeFactory.setSize(RADIUS * 2); 
    return shapeFactory.createCircle(); 
}