0

JTS Topology Suiteを使用して、アプリケーションで一部のジオメトリを処理しています。開始点として、リーダーをインスタンス化します。

WKTReader reader = new WKTReader();

次に、リーダーを使用してポリゴン レコードをチェックします。

Geometry poly = reader.read(res.getString("GEOM"));
Geometry point = reader.read("Point(" + res.getString("LON")
    + " " + res.getString("LAT") + ")");
boolean inside = poly.contains(point);

問題は、この方法でポリゴンを見つけるのに時間がかかりすぎることです。したがって、このプロセスには別のオプションが必要です。WTKReaderこのプロセスに使用する代替手段はありますか? ありがとう。

PS: MYSQL DB を使用しています。

4

1 に答える 1

0

まず、ポリゴンに標準の Java シリアライゼーション/デシリアライゼーションを使用してみてください。

次に、LON と LAT を STRING として格納するのはあまり効果的ではありません。おそらく、数値型を試す必要があります。

プロファイリングの結果 (最も多くの時間を消費するもの) を提供していただければ、より多くの支援を得ることができます。ただし、DB での操作が最も遅いと思われるため、一度にすべてのエントリをフェッチして、キャッシュを追加してみてください。

もう 1 つのオプションは、すべての GEOM の境界ボックス ポイントを DB に格納し、境界ボックスに属するそのポイントのみを SQL クエリでフェッチし、Java 側で正確な「含む」チェックを実行することです。

于 2013-04-16T10:26:23.423 に答える