jgeometry izmantošana grafisko datu apstrādei · web viewjgeometry izmantošana...

12
JGeometry izmantošana grafisko datu apstrādei 1. Darbam ar Java tika izmantota programma NetBeans 7.1. 2. Ir nepieciešamas dažas Java bibliotēkas, kuras nav standarta komplektācijā: 1) oracle.jdbc.* 2) oracle.sql.* 3) oralce.spatial.* Pirmās divas ir brīvi pieejamas internetā (piemēram, findjar.com, kurā var ērti sameklēt vajadzīgo paku pēc nepieciešamās klases): Lai dabūtu oracle.spatial.* klases, nepieciešams lejupielādēt un uzinstalēt Oracle datubāzi 10g Release 1 vai jaunāku, kuras komplektācijā ir pieejama Oracle Spatial Java Class Library, kas būtībā ir 4 pakas:

Upload: lediep

Post on 12-Mar-2018

224 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: JGeometry izmantošana grafisko datu apstrādei · Web viewJGeometry izmantošana grafisko datu apstrādei 1. Darbam ar Java tika izmantota programma NetBeans 7.1. 2. Ir nepieciešamas

JGeometry izmantošana grafisko datu apstrādei

1. Darbam ar Java tika izmantota programma NetBeans 7.1.2. Ir nepieciešamas dažas Java bibliotēkas, kuras nav standarta komplektācijā:

1) oracle.jdbc.*2) oracle.sql.*3) oralce.spatial.*

Pirmās divas ir brīvi pieejamas internetā (piemēram, findjar.com, kurā var ērti sameklēt vajadzīgo paku pēc nepieciešamās klases):

Lai dabūtu oracle.spatial.* klases, nepieciešams lejupielādēt un uzinstalēt

Oracle datubāzi 10g Release 1 vai jaunāku, kuras komplektācijā ir

pieejama Oracle Spatial Java Class Library, kas būtībā ir 4 pakas:

1) sdoapi.jar2) sdonm.jar3) sdotopo.jar4) sdout.jar

Pēc instalēšanas pakas ir atrodamas direktorijā:$ora_home/product/{version}/db_1/md/jlib/

Page 2: JGeometry izmantošana grafisko datu apstrādei · Web viewJGeometry izmantošana grafisko datu apstrādei 1. Darbam ar Java tika izmantota programma NetBeans 7.1. 2. Ir nepieciešamas

Bibliotēku (.jar) piesaistīšana

Bibliotēkas var piesaistīt vairākos veidos:1) mainot sistēmas mainīgā CLASSPATH vērtību, iekļaujot tajā ceļu uz vietu, kur saglabātas bibliotēkas;2) iekopējot bibliotēkas direktorijā:C:\Program Files\Java\jdk1.6.0\jre\lib\ext\3) norāda IDE rīka konfigurācijā (šajā gadījumā NetBeans) – kur atradīsies iekļaujamās pakas:Projekta kokā uz mapes „Libraries” spiež labo peles taustiņu un izvēlas „Add JAR/Folder”:

Page 3: JGeometry izmantošana grafisko datu apstrādei · Web viewJGeometry izmantošana grafisko datu apstrādei 1. Darbam ar Java tika izmantota programma NetBeans 7.1. 2. Ir nepieciešamas

Java programmas piemērspackage mpa_spatial;

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.sql.Connection;import oracle.jdbc.OracleTypes;import oracle.sql.CLOB;import java.sql.*;import java.sql.DriverManager;import java.sql.SQLException;import oracle.jdbc.driver.OracleConnection;import oracle.spatial.geometry.DataException;import java.io.OutputStream;import java.io.ByteArrayOutputStream;import java.io.ByteArrayInputStream;import java.io.InputStream;import oracle.jdbc.driver.OracleDriver;import oracle.sql.STRUCT;import oracle.spatial.util.*;import oracle.spatial.geometry.*; public class MPA_Spatial { protected static Connection m_conn; public static void main(String[] args) throws SQLException, IOException { Statement stmt = null; ResultSet rslt = null; STRUCT geomObj = null; JGeometry jGeom = null; //Pieslēdzas datubāzei try { DriverManager.registerDriver(new OracleDriver()) ; //jdbc:oracle:thin:@localhost:PortNumber:SID/ServiceName,DBuserName, Password m_conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:RTU10GR2", "SYSTEM", "SYSTEM"); } catch(SQLException e) { e.printStackTrace();} stmt = m_conn.createStatement();

Page 4: JGeometry izmantošana grafisko datu apstrādei · Web viewJGeometry izmantošana grafisko datu apstrādei 1. Darbam ar Java tika izmantota programma NetBeans 7.1. 2. Ir nepieciešamas

1. piemērs. Nolasa ģeometriju un veic dažādas parbaudes ar to// Ģeometrijas nolasīšana no datu bāzes rslt = stmt.executeQuery("SELECT geometrija FROM gdb_koki WHERE apraksts = 'Aplis - vidus:Lielais'"); rslt.next(); geomObj = (STRUCT) rslt.getObject(1); //oracle.sql.STRUCT //PārkonvertēSTRUCT uz JGeometry tipu jGeom = JGeometry.load(geomObj); System.out.println("Ģeometrijas dimensijas: " + jGeom.getDimensions()); //Funkcija parbauda, vai ģeometrija ir riņķis if (jGeom.isCircle()) {System.out.println("Jā, tas ir riņķis.");} else {System.out.println("Nē, tas nav riņķis!");}

Page 5: JGeometry izmantošana grafisko datu apstrādei · Web viewJGeometry izmantošana grafisko datu apstrādei 1. Darbam ar Java tika izmantota programma NetBeans 7.1. 2. Ir nepieciešamas
Page 6: JGeometry izmantošana grafisko datu apstrādei · Web viewJGeometry izmantošana grafisko datu apstrādei 1. Darbam ar Java tika izmantota programma NetBeans 7.1. 2. Ir nepieciešamas

2. piemērs. Izpilda filtra vaicājumu un izvada atgrieztās ģeometrijas .xsd faila formātā, ko var pielietot attēlošanai karšu sistēmās

//Kolonna ar spatial datu tipu SDO_GEOMETRY//Rectangle filter rslt = stmt.executeQuery("SELECT geometrija " + "FROM gdb_ekas " + "WHERE sdo_filter (geometrija," + "sdo_geometry(2003,NULL,NULL," + "sdo_elem_info_array(1,1003,3)," + "sdo_ordinate_array (13,33,44,46))) = 'TRUE'"); String theGMLString = null; GML2 gmltest = new GML2(); gmltest.setConnection((OracleConnection)m_conn); while (rslt.next()) { geomObj = (STRUCT) rslt.getObject(1);//Konvertē Spatial ģeometrijas objektu uz Geography Markup// Language(GML 2.0),kas balstās uz ģeometriju tipiem, kas //definēti "Open GIS geometry.xsd" shēmas dokumentā theGMLString = gmltest.to_GMLGeometry(geomObj); System.out.println(theGMLString); }

Page 7: JGeometry izmantošana grafisko datu apstrādei · Web viewJGeometry izmantošana grafisko datu apstrādei 1. Darbam ar Java tika izmantota programma NetBeans 7.1. 2. Ir nepieciešamas
Page 8: JGeometry izmantošana grafisko datu apstrādei · Web viewJGeometry izmantošana grafisko datu apstrādei 1. Darbam ar Java tika izmantota programma NetBeans 7.1. 2. Ir nepieciešamas

3. piemērs. Izveido ģeometriju un ievieto to datubāzē

// Izveido ģeometriju jGeom = JGeometry.createCircle(15, 76, 6, 0); // x,y,Rādiuss,SRID // Ģeometrijas ierakstīšana datu bāzē PreparedStatement ps = m_conn.prepareStatement( "INSERT INTO gdb_koki(koka_id,geometrija,apraksts)" + "VALUES(gdb_koka_id_seq.NEXTVAL,?,'Koks nācis no Java')");//KonvertēJGeometry instanci uz DB STRUCT geomObj = JGeometry.store(jGeom, m_conn); ps.setObject(1, geomObj); ps.execute(); System.out.println("Ģeometrija ierakstīta datubāzē...");// Aizver visas konekcijas ----------------------------------- stmt.close(); rslt.close(); m_conn.close(); }}