Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru
Руководство по PostGIS. Глава 4. Использование PostGIS. 4.8. Клиенты Java (JDBC)
Назад Вперед

4.8. Клиенты Java (JDBC)

Java-клиенты имеют доступ к PostGIS-ским объектам "geometry" в базе данных PostgreSQL одним из двух способов: непосредственно, в тестовом представлении, или с ипользованием расширения объектов JDBC, связанного с PostGIS. В порядке использования расширенных объектов, файл "postgis.jar" должен находиться в вашем CLASSPATH вместе с с пакетом драйвера JDBC "postgresql.jar".

import java.sql.*;
import java.util.*;
import java.lang.*;
import org.postgis.*;

public class JavaGIS {

public static void main(String[] args) {

  java.sql.Connection conn;

  try {
    /*
    * Загрузка драйвера JDBC и установление соединения.
    */
    Class.forName("org.postgresql.Driver");
    String url = "jdbc:postgresql://localhost:5432/database";
    conn = DriverManager.getConnection(url, "postgres", "");
    /*
    * Добавляем геометрические типы в соединение.
    * Заметим, что вы должны установить специальное соединение с pgsql
    * до вызова метода addDataType().
    */
    ((org.postgresql.Connection)conn).addDataType("geometry","org.postgis.PGgeometry")
;
    ((org.postgresql.Connection)conn).addDataType("box3d","org.postgis.PGbox3d");
    /*
    * Создаем объект запроса и выполняем запрос select.
    */
    Statement s = conn.createStatement();
    ResultSet r = s.executeQuery("select AsText(geom) as geom,id from geomtable");
    while( r.next() ) {
      /*
      * Восстанавливаем геометрию как объект, какого то из геометрических типов.
      * Выводим его.
      */
      PGgeometry geom = (PGgeometry)r.getObject(1);
      int id = r.getInt(2);
      System.out.println("Row " + id + ":");
      System.out.println(geom.toString());
    }
    s.close();
    conn.close();
  }
catch( Exception e ) {
  e.printStackTrace();
  }
}
}

Объект "PGgeometry" является оберткой объекта, который содержит объект топологической геометрии (подкласс абстрактного класса "Geometry") какого-то из следующих типов: Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon.

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());
    }
  }
}

Для расширенных объектов JavaDoc предоставляет справку по различным функциям доступа к данным в геометрических объектах.

4.9. Клиенты C (libpq)

...

4.9.1. Текстовые указатели

...

4.9.2. Бинарные указатели

...


Назад Выше Вперед
4.7. Использование Mapserver Начало 5. Советы по производительности
Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2008-04-21 13:04:47

Метки материала: manual, PostGIS, Java, JDBC, база, PostgreSQL, geometry, postgis.jar

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.