2012-01-10 86 views
3

我有一個巨大的一組點已經加載在一個平面內我需要繪製一個圓/橢圓從一個給定的點和以米爲單位的半徑距離開始,然後檢查哪些點在圓內。圓點與JTS

我已經用within()方法做了多邊形,但是我找不到繪製圓/橢圓的方法,而不必指定多邊形周圍的每個點。

有沒有辦法做到這一點在JTS或我需要另一個Java庫?

回答

2

您可以驗證距離點的距離小於半徑。不需要畫圓圈來知道里面有哪些點。爲了縮短運行時間,請將距離的平方與半徑的平方進行比較;這節省了不必要的平方根操作。

對於橢圓,問題只是稍微困難一點,涉及二次形式x^2 + k y^2

+0

爲什麼shapeFactory.setNumPoints(32);?你是怎麼想出32的? – 2017-04-27 17:36:58

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(); 
}