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;
+    }
 }