Моя цель: прочитать точки из географического многоугольника, хранящегося в моей базе данных PostGIS.
Руководство PostGIS содержит отличный пример того, как извлечь Polygon из базы данных.
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());
}
}
}
Я имею дело с географией, а не с геометрией, поэтому этот код не совсем подходит для меня. Если я пытаюсь извлечь Polygon из моей таблицы, я получаю следующее 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
, поскольку это для геометрии, но есть ли эквивалент для географии? Я знаю, что география для многих вещей поддерживается лишь частично, поэтому я не уверен, что я могу или не могу здесь делать.