LightDB has a set of data types that can store geometric features into a table. These include single points, lines, and polygons. We support these types in Java with the org.LightDB.geometric package. Please consult the Javadoc mentioned in Chapter 13, Further Reading for details of available classes and features.
Example 9.1. Using the CIRCLE datatype JDBC
import java.sql.*;
import org.postgresql.geometric.PGpoint;
import org.postgresql.geometric.PGcircle;
public class GeometricTest {
public static void main(String args[]) throws Exception {
String url = "jdbc:lightdb://localhost:5432/test";
try (Connection conn = DriverManager.getConnection(url, "test", "")) {
try (Statement stmt = conn.createStatement()) {
.execute("CREATE TEMP TABLE geomtest(mycirc circle)");
stmt}
insertCircle(conn);
retrieveCircle(conn);
}
}
private static void insertCircle(Connection conn) throws SQLException {
= new PGpoint(1, 2.5);
PGpoint center double radius = 4;
= new PGcircle(center, radius);
PGcircle circle try (PreparedStatement ps = conn.prepareStatement("INSERT INTO geomtest(mycirc) VALUES (?)")) {
.setObject(1, circle);
ps.executeUpdate();
ps}
}
private static void retrieveCircle(Connection conn) throws SQLException {
try (Statement stmt = conn.createStatement()) {
try (ResultSet rs = stmt.executeQuery("SELECT mycirc, area(mycirc) FROM geomtest")) {
while (rs.next()) {
= (PGcircle)rs.getObject(1);
PGcircle circle double area = rs.getDouble(2);
System.out.println("Center (X, Y) = (" + circle.center.x + ", " + circle.center.y + ")");
System.out.println("Radius = " + circle.radius);
System.out.println("Area = " + area);
}
}
}
}
}