1

2 次元の有界整数ラティスの値を暗黙的に定義する double の 2 次元配列があります。これとは別に、n 個の 2D シード ポイントがあります (おそらく非整数座標)。各グリッド ポイントを最も近いシード ポイントで識別し、各シード ポイントで識別されたグリッド ポイントの値を合計したいと思います。

JTS/Geotools で最も効率的な方法は何ですか? を使用してボロノイ図を作成するところまではVoronoiDiagramBuilder行きましたが、それに基づいてすべてのグリッド ポイントを効率的に割り当てる方法がわかりません。

4

1 に答える 1

1

これを行う最善の方法は、 nのサイズとボロノイ図の多角形の数によって異なります。ただし、基本的には、セットの 1 つを反復処理し、それと相互作用する他のセット内の要素を見つける必要があります。

したがって、nがポリゴンの数よりも少ないと仮定すると、次のようになります。

// features is the collection of Voronoi polygons
// Points is the N points
Expression propertyName = filterFactory.property(features.getSchema()
    .getGeometryDescriptor()
    .getName());
for (Point p: points) {
    Filter filter = filterFactory.contains(propertyName,
        filterFactory.literal(p));
    SimpleFeatureCollection sub = features.subCollection(filter);
    //sub now contains your polygon
    //do some processing or save ID 
}

nが多角形の数よりも大きい場合 - ループを逆にして、contains の代わりに使用しwithinて、各多角形のすべてのポイントを検索します。

于 2015-03-23T08:28:56.467 に答える