You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by mi...@apache.org on 2022/11/15 23:36:53 UTC
[incubator-streampipes] 05/11: add new methods for projections in builder
This is an automated email from the ASF dual-hosted git repository.
micklich pushed a commit to branch STREAMPIPES-584
in repository https://gitbox.apache.org/repos/asf/incubator-streampipes.git
commit 77b52b0a1b9eb5ae6c4787dfe3a94864edacf7e8
Author: micklich <fl...@mailbox.org>
AuthorDate: Sat Sep 17 20:28:21 2022 +0200
add new methods for projections in builder
---
.../geo/jvm/jts/helper/SpGeometryBuilder.java | 52 ++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/jts/helper/SpGeometryBuilder.java b/streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/jts/helper/SpGeometryBuilder.java
index 4edc9e2ad..17369f4b5 100644
--- a/streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/jts/helper/SpGeometryBuilder.java
+++ b/streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/jts/helper/SpGeometryBuilder.java
@@ -62,6 +62,19 @@ public class SpGeometryBuilder {
return point;
}
+ public static Geometry createSPGeom(Geometry geom, Integer epsgCode) {
+
+ Geometry returnedGeom = null;
+ //gets precision model from getPrecisionModel method
+ PrecisionModel prec = getPrecisionModel(epsgCode);
+ //creates the factory object
+ GeometryFactory geomFactory = new GeometryFactory(prec, epsgCode);
+ // creates the new geom from the input geom. precision and srid will be calculated above and will be set in the new geom
+ returnedGeom = geomFactory.createGeometry(geom);
+
+ return returnedGeom;
+ }
+
/**
* creates a Geometry from a wkt_string. string has to be valid and is not be checked. If invalid, an empty point
@@ -125,4 +138,43 @@ public class SpGeometryBuilder {
return precisionModel;
}
+
+ public static Geometry createEmptyGeometry(Geometry geom) {
+ Geometry outputGeom = null;
+
+ if (geom instanceof Point) {
+ outputGeom = geom.getFactory().createPoint();
+ } else if (geom instanceof LineString) {
+ outputGeom = geom.getFactory().createLineString();
+ } else if (geom instanceof Polygon) {
+ outputGeom = geom.getFactory().createPolygon();
+ } else if (geom instanceof MultiPoint) {
+ outputGeom = geom.getFactory().createMultiPoint();
+ } else if (geom instanceof MultiLineString) {
+ outputGeom = geom.getFactory().createMultiLineString();
+ } else if (geom instanceof MultiPolygon) {
+ outputGeom = geom.getFactory().createMultiPolygon();
+ } else {
+ outputGeom = geom.getFactory().createGeometryCollection();
+ }
+ return outputGeom;
+ }
+
+ public static Point extractPoint(Geometry geom) {
+ Point returnedPoint = null;
+
+ Integer epsgCode = geom.getSRID();
+
+ if (geom instanceof Point) {
+ // get y lng and x lat coords from point. has to be casted because input is basic geometry
+ returnedPoint = (Point) geom;
+
+ } else if (geom instanceof LineString) {
+ // cast geometry to line and calculates the centroid to get point
+ returnedPoint = (Point) createSPGeom((geom).getInteriorPoint(), epsgCode);
+ } else {
+ returnedPoint = (Point) createSPGeom(geom.getCentroid(), epsgCode);
+ }
+ return returnedPoint;
+ }
}