我的目标:从我的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());
}
}
}
我正在处理地理,但不是Geometry,所以这段代码对我来说并不适用.如果我尝试从我的表中提取多边形,我得到以下ClassCastException:
org.postgresql.util.PGobject cannot be cast to org.postgis.PGgeometry
我修改了前两行看起来像这样,它的工作原理如下:
PGobject area = (PGobject)rs.getObject("area");
if (area.getType().compareTo("geography") == 0) {
...
}
我现在的问题是我无法弄清楚如何修改代码示例的第三行以适用于Geography.我可能不应该把它转换为Polygon类型,因为那是Geometry,但是它是否与Geography相当?我知道地理学只是部分支持很多东西,所以我不确定我能做什么或不能做什么.