Skip to Main Content

Database Software

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

SDO_Geometry -> J3D_Geometry Conundum

955911Aug 15 2012 — edited Mar 11 2013
Hi all,

I am new to Oracle Spatial and Java, and also to this forum so apologies for any faux pas or ignorances! I am writing a program to place solar panels on roofs, using Oracle as a backend and java to do the calculations.

At the moment, I have successfully managed to connect to my database and extract the data using the cod below. I want to use Element_Extractor to decompose my 3D building into separate faces stored as JGeometry so that I can then carry out mathematical functions on the coordinates after. That is where I am stuck! The section ""while ((g = e.nextElement(inner_outer)) != null)"" is where I am stumped.

Any suggestions/links/ideas/example code would be much appreciated! Many Thanks,

Kelvin.

public void loadcoords(String kmltablename) {

try {
conn = createCon();
String query = "select geometry from " + kmltablename;
System.out.println(query);
Statement stmt1 = createStatement();
ResultSet rs = stmt1.executeQuery(query);
System.out.println("Result Set = " + rs);


while (rs.next()) {
//System.out.println("rs.getBytes = " + rs.getBytes(1));
byte[] image = rs.getBytes(1);

// convert image into a JGeometry object using the SDO pickler
JGeometry building = JGeometry.load(image);
J3D_Geometry building3D = new J3D_Geometry(building.getType(),
building.getSRID(), building.getElemInfo(),
building.getOrdinatesArray());

// Create new extractor
ElementExtractor e = new ElementExtractor(building3D, 0,
ElementExtractor.MULTICOMP_TOSIMPLE);

// Geometry to receive extracted element(s)
J3D_Geometry g;

// Used to receive the type of element (1=outer, 2=inner)
int inner_outer[] = { 0 };

// Extract the elements
while ((g = e.nextElement(inner_outer)) != null) {

// Process extracted element
String decomp = g.toStringFull();
System.out.println(decomp);

}

}
rs.close();
stmt1.close();
conn.close();
} catch (ClassNotFoundException e) {
System.out.println("Class Not Found Error");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("SQL Exception Error");
e.printStackTrace();
} catch (Exception e) {// Catch exception if any
System.err.println("Error: " + e.getMessage());
}

}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Apr 8 2013
Added on Aug 15 2012
2 comments
412 views