Чтение точек из географического многоугольника в базе данных PostGIS

Моя цель: прочитать точки из Географического многоугольника, хранящегося в моей базе данных PostGIS.

В руководстве PostGIS есть отличный пример того, как извлечь Многоугольник из базы данных.

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

Я изменил первые две строки, чтобы они выглядели так, что работает:

PGobject area = (PGobject)rs.getObject("area");
if (area.getType().compareTo("geography") == 0) {
    ...
}

Моя проблема теперь в том, что Я не могу понять, как изменить третью строку примера кода для работы с Geography. Мне, вероятно, не следует приводить его к типу Polygon , поскольку это для геометрии, но есть ли эквивалент для географии? Я знаю, что география для многих вещей поддерживается лишь частично, поэтому я не уверен, что я могу или не могу здесь делать.

10
задан Steph 8 July 2011 в 23:21
поделиться