私の目標:PostGISデータベースに保存されている地理ポリゴンからポイントを読み取る。PostGISデータベース内の地理ポリゴンからの読み取り点
PostGISマニュアルには、データベースからポリゴンを抽出する方法のa great exampleがあります。
PGgeometry geom = (PGgeometry)r.getObject(1);
if (geom.getType() == Geometry.POLYGON) {
Polygon pl = (Polygon)geom.getGeometry();
for (int r = 0; r < pl.numRings(); r++) {
LinearRing rng = pl.getRing(r);
System.out.println("Ring: " + r);
for (int p = 0; p < rng.numPoints(); p++) {
Point pt = rng.getPoint(p);
System.out.println("Point: " + p);
System.out.println(pt.toString());
}
}
}
私はジオメトリではなくジオメトリを扱っています。このコードは私にとってはあまり効果がありません。私は私のテーブルからポリゴンを抽出しようとすると、私は次のClassCastException
を得る:
org.postgresql.util.PGobject cannot be cast to org.postgis.PGgeometry
私は働く、このように見えるように最初の2行を変更した:
PGobject area = (PGobject)rs.getObject("area");
if (area.getType().compareTo("geography") == 0) {
...
}
私の問題を今すぐGeographyのために働くコードサンプルの第3行を修正する方法がわかりません。 Geometryのためのタイプなので、おそらくPolygon
タイプにキャストすべきではありませんが、Geographyと同等のものはありますか?地理学は部分的にしかサポートされていないので、私はここで何ができるかできないのか分かりません。
'st_geometryn'と' st_pointn'を試しましたか?擬似コード:while(st_geometryn(i)){while(st_pointn(k)){process_pt(); k ++} i ++} '? – unmounted
多角形をサーバから「幾何学」にキャストする必要があります。 –
@bvmou:ST_GeometryNとST_PointNはジオメトリのみで動作しますが、私はGeographyを使用します。私は、Java側ではなく、データベース側のポイントを取得しようとは考えていませんでした。私はちょうど 'ST_AsText(ポリゴン)'を実行して、何かをより良く理解できなければ、そこからポイントを解析することができると思います。それでも、JDBCを使ってこれを行うより良い方法がなければならないようですが、私はそれを知らないだけです。 – Steph