Skip to content

Commit

Permalink
Move extra functions to GeoDB class after comments from jdeolive
Browse files Browse the repository at this point in the history
  • Loading branch information
jacques committed Jan 15, 2012
1 parent 7ff139e commit 6b6543a
Show file tree
Hide file tree
Showing 4 changed files with 121 additions and 291 deletions.
131 changes: 0 additions & 131 deletions core/src/main/java/geodb/ExtraSpatialFunctions.java

This file was deleted.

121 changes: 121 additions & 0 deletions core/src/main/java/geodb/GeoDB.java
Expand Up @@ -24,6 +24,7 @@
import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.IntersectionMatrix;
import com.vividsolutions.jts.geom.Point;
import com.vividsolutions.jts.io.InputStreamInStream;
import com.vividsolutions.jts.io.OutputStreamOutStream;
Expand Down Expand Up @@ -1425,4 +1426,124 @@ static String geotypeConstraint(String schema, String table, String column) {
}
return "ENFORCE_GEOTYPE_" + name;
}

public static Integer dimension(byte[] wkb) {
Geometry geometry = gFromWKB(wkb);
if (geometry != null) {
return geometry.getDimension();
}
return null;
}

public static byte[] boundary(byte[] wkb) {
Geometry geometry = gFromWKB(wkb);
if (geometry != null) {
Geometry boundary = geometry.getBoundary();
if (boundary != null) {
return gToWKB(boundary);
}
}
return null;
}

public static boolean relate(byte[] wkb1, byte[] wkb2,
String intersectionPattern) {
Geometry geometry1 = gFromWKB(wkb1);
Geometry geometry2 = gFromWKB(wkb1);
if (geometry1 != null && geometry2 != null) {
return geometry1.relate(geometry2, intersectionPattern);
}
return false;
}

public static String relate(byte[] wkb1, byte[] wkb2) {
Geometry geometry1 = gFromWKB(wkb1);
Geometry geometry2 = gFromWKB(wkb1);
if (geometry1 != null && geometry2 != null) {
IntersectionMatrix result = geometry1.relate(geometry2);
return result.toString();
}
return null;
}

public static byte[] convexHull(byte[] wkb) {
Geometry geometry = gFromWKB(wkb);
if (geometry != null) {
Geometry boundary = geometry.convexHull();
if (boundary != null) {
return gToWKB(boundary);
}
}
return null;
}

public static byte[] difference(byte[] wkb1, byte[] wkb2) {
if (wkb1 == null) {
return null;
}
if (wkb2 == null) {
return wkb1;
}
Geometry geometry1 = gFromWKB(wkb1);
Geometry geometry2 = gFromWKB(wkb2);
if (geometry1 == null) {
return null;
}
if (geometry2 == null) {
return wkb1;
}

return gToWKB(geometry1.difference(geometry2));
}

public static byte[] intersection(byte[] wkb1, byte[] wkb2) {
if (wkb1 == null || wkb2 == null) {
return null;
}
Geometry geometry1 = gFromWKB(wkb1);
Geometry geometry2 = gFromWKB(wkb2);
if (geometry1 == null || geometry2 == null) {
return null;
}

return gToWKB(geometry1.intersection(geometry2));
}

public static byte[] symdifference(byte[] wkb1, byte[] wkb2) {
if (wkb1 == null) {
return wkb2;
}
if (wkb2 == null) {
return wkb1;
}
Geometry geometry1 = gFromWKB(wkb1);
Geometry geometry2 = gFromWKB(wkb2);
if (geometry1 == null) {
return gToWKB(geometry2);
}
if (geometry2 == null) {
return gToWKB(geometry1);
}

return gToWKB(geometry1.symDifference(geometry2));
}

public static byte[] union(byte[] wkb1, byte[] wkb2) {
if (wkb1 == null) {
return wkb2;
}
if (wkb2 == null) {
return wkb1;
}
Geometry geometry1 = gFromWKB(wkb1);
Geometry geometry2 = gFromWKB(wkb2);
if (geometry1 == null) {
return gToWKB(geometry2);
}
if (geometry2 == null) {
return gToWKB(geometry1);
}

return gToWKB(geometry1.union(geometry2));
}
}

0 comments on commit 6b6543a

Please sign in to comment.