xBB – бесплатные скрипты PHP и доки для вебмастеров | |||||||||||||
ДокументацияМетки (все метки)bbcode, html, php, xbb, базы данных, интернет, компьютер, программирование, сайт, софт
Подписаться через RSS2Email.ru
|
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. Бинарные указатели...
Последнее редактирование: 2008-04-21 13:04:47 Метки материала: manual, PostGIS, Java, JDBC, база, PostgreSQL, geometry, postgis.jar Оставьте свой комментарий: |
||||||||||||
© 2007-2010, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.