Руководство по PostGIS
4.8. Клиенты Java (JDBC) |
<<< предыдущая глава | оглавление | следующая глава >>> |
Java-клиенты имеют доступ к объектам "geometry" PostGIS в базе данных
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. Бинарные указатели
...
Последнее обновление: August 14 2008 (Наверх)
|
© GIS-Lab и авторы, 2002-2008. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна.