This is an automated email from the ASF dual-hosted git repository. micklich pushed a commit to branch 1321-geo-create-derived-point-of-input-geometry-processor in repository https://gitbox.apache.org/repos/asf/streampipes.git
commit b8891bf8196649a8d16f27757239c5573709cda6 Author: micklich <[email protected]> AuthorDate: Thu Feb 23 21:13:36 2023 +0100 [#1321] add switch between interior and centroid point as output. add resources --- .../streampipes/processors/geo/jvm/GeoJvmInit.java | 7 +++-- .../CreateDerivedPointProcessor.java} | 33 ++++++++++++++------- .../documentation.md | 17 +++++++---- .../icon.png | Bin .../strings.en | 7 +++-- 5 files changed, 45 insertions(+), 19 deletions(-) diff --git a/streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/GeoJvmInit.java b/streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/GeoJvmInit.java index d3024ff10..6dcdc5b3f 100644 --- a/streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/GeoJvmInit.java +++ b/streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/GeoJvmInit.java @@ -30,6 +30,7 @@ import org.apache.streampipes.messaging.mqtt.SpMqttProtocolFactory; import org.apache.streampipes.processors.geo.jvm.config.ConfigKeys; import org.apache.streampipes.processors.geo.jvm.jts.processor.buffergeometry.BufferGeomProcessor; import org.apache.streampipes.processors.geo.jvm.jts.processor.bufferpoint.BufferPointProcessor; +import org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.point.CreateDerivedPointProcessor; import org.apache.streampipes.processors.geo.jvm.jts.processor.epsg.EpsgProcessor; import org.apache.streampipes.processors.geo.jvm.jts.processor.latlngtojtspoint.LatLngToJtsPointProcessor; import org.apache.streampipes.processors.geo.jvm.jts.processor.reprojection.ReprojectionProcessor; @@ -78,7 +79,9 @@ public class GeoJvmInit extends ExtensionsModelSubmitter { new GeometryValidationProcessor(), new TopologyValidationProcessor(), new BufferGeomProcessor(), - new BufferPointProcessor()) + new BufferPointProcessor(), + new ReprojectionProcessor(), + new CreateDerivedPointProcessor()) .registerMessagingFormats( new JsonDataFormatFactory(), new CborDataFormatFactory(), @@ -97,7 +100,7 @@ public class GeoJvmInit extends ExtensionsModelSubmitter { PGSimpleDataSource ds = new PGSimpleDataSource(); String[] serverAddresses = {"localhost"}; ds.setServerNames(serverAddresses); - int[] portNumbers = {54320}; + int [] portNumbers = {54320}; ds.setPortNumbers(portNumbers); ds.setDatabaseName("EPSG"); ds.setUser("streampipes"); diff --git a/streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/jts/processor/derivedgeometry/interior/CreateInteriorPointProcessor.java b/streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/jts/processor/derivedgeometry/point/CreateDerivedPointProcessor.java similarity index 79% rename from streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/jts/processor/derivedgeometry/interior/CreateInteriorPointProcessor.java rename to streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/jts/processor/derivedgeometry/point/CreateDerivedPointProcessor.java index 8018b84b7..0113cc08a 100644 --- a/streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/jts/processor/derivedgeometry/interior/CreateInteriorPointProcessor.java +++ b/streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/jts/processor/derivedgeometry/point/CreateDerivedPointProcessor.java @@ -16,7 +16,7 @@ * */ -package org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.interior; +package org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.point; import org.apache.streampipes.commons.exceptions.SpRuntimeException; import org.apache.streampipes.model.DataProcessorType; @@ -30,6 +30,7 @@ import org.apache.streampipes.sdk.helpers.EpProperties; import org.apache.streampipes.sdk.helpers.EpRequirements; import org.apache.streampipes.sdk.helpers.Labels; import org.apache.streampipes.sdk.helpers.Locales; +import org.apache.streampipes.sdk.helpers.Options; import org.apache.streampipes.sdk.helpers.OutputStrategies; import org.apache.streampipes.sdk.utils.Assets; import org.apache.streampipes.wrapper.context.EventProcessorRuntimeContext; @@ -42,22 +43,23 @@ import org.locationtech.jts.geom.Point; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class CreateInteriorPointProcessor extends StreamPipesDataProcessor { - public static final String GEOM_KEY = "geom-key"; +public class CreateDerivedPointProcessor extends StreamPipesDataProcessor { + public static final String GEOM_KEY = "geometry-key"; public static final String EPSG_KEY = "epsg-key"; - // OUTPUT RUNTIME NAME + public static final String POINT_OUTPUT_TYPE_KEY = "point-output-type-key"; public static final String INTERIOR_GEOM_KEY = "interior-geom-key"; public static final String INTERIOR_EPSG_KEY = "interior-epsg-key"; public static final String INTERIOR_GEOM_RUNTIME = "interior-point"; public static final String INTERIOR_EPSG_RUNTIME = "epsg-interior-point"; private String geometryMapper; private String epsgMapper; - private static final Logger LOG = LoggerFactory.getLogger(CreateInteriorPointProcessor.class); + private String outputType; + private static final Logger LOG = LoggerFactory.getLogger(CreateDerivedPointProcessor.class); @Override public DataProcessorDescription declareModel() { return ProcessingElementBuilder.create( - "org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.interior") + "org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.point") .category(DataProcessorType.GEO) .withAssets(Assets.DOCUMENTATION, Assets.ICON) .withLocales(Locales.EN) @@ -72,7 +74,8 @@ public class CreateInteriorPointProcessor extends StreamPipesDataProcessor { Labels.withId(EPSG_KEY), PropertyScope.MEASUREMENT_PROPERTY) .build()) - // adjust output method + .requiredSingleValueSelection(Labels.withId(POINT_OUTPUT_TYPE_KEY), + Options.from("Centroid Point", "Interior Point")) .outputStrategy(OutputStrategies.append( EpProperties.stringEp( Labels.withId(INTERIOR_GEOM_KEY), @@ -93,8 +96,10 @@ public class CreateInteriorPointProcessor extends StreamPipesDataProcessor { this.geometryMapper = parameters.extractor().mappingPropertyValue(GEOM_KEY); this.epsgMapper = parameters.extractor().mappingPropertyValue(EPSG_KEY); + this.outputType = parameters.extractor().selectedSingleValue(POINT_OUTPUT_TYPE_KEY, String.class); } + @Override public void onEvent(Event event, SpOutputCollector collector) throws SpRuntimeException { String geom = event.getFieldBySelector(geometryMapper).getAsPrimitive().getAsString(); @@ -104,9 +109,17 @@ public class CreateInteriorPointProcessor extends StreamPipesDataProcessor { // TODO remove check after harmonized semantic types and multiple tpes LOG.debug("geom is already a point"); } else { - Point cendroidPoint = (Point) SpGeometryBuilder.createSPGeom(geometry.getCentroid(), geometry.getSRID()); - event.addField(INTERIOR_GEOM_RUNTIME, cendroidPoint.toText()); - event.addField(INTERIOR_EPSG_RUNTIME, cendroidPoint.getSRID()); + Point derivedPointOutput = null; + switch (this.outputType) { + case "Interior Point": + derivedPointOutput = (Point) SpGeometryBuilder.createSPGeom(geometry.getInteriorPoint(), geometry.getSRID()); + break; + case "Centroid Point": + derivedPointOutput = (Point) SpGeometryBuilder.createSPGeom(geometry.getCentroid(), geometry.getSRID()); + break; + } + event.addField(INTERIOR_GEOM_RUNTIME, derivedPointOutput.toText()); + event.addField(INTERIOR_EPSG_RUNTIME, derivedPointOutput.getSRID()); collector.collect(event); } } diff --git a/streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.interior/documentation.md b/streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.point/documentation.md similarity index 72% rename from streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.interior/documentation.md rename to streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.point/documentation.md index c6b47978c..6f9322a2a 100755 --- a/streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.interior/documentation.md +++ b/streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.point/documentation.md @@ -25,17 +25,15 @@ *** ## Description +Creates a Point of every other Geometry (not included a Point itself). -Creates an interior point from a geometry other than a Point itself. -An interior point is guaranteed to lie in the interior of the input geometry, if -it possible to calculate such a point exactly. Otherwise, the point may -lie on the boundary of the geometry. *** ## Required inputs * JTS Geometry * EPSG Code +* Point Output Type *** ## Configuration @@ -46,10 +44,19 @@ Input Geometry ### EPSG field Integer value representing EPSG code +### Point Output Type +Chose between +* Interior Point + * An interior point is guaranteed to lie in the interior of the Geometry, + if it is possible to calculate such a point exactly. Otherwise, the point may lie on + the boundary of the geometry. +* Centroid Point + * Computes the centroid of a Geometry + *** ## Output -A point geometry with EPSG code. Location is based on +A point geometry with EPSG code. ### Example diff --git a/streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.interior/icon.png b/streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.point/icon.png similarity index 100% rename from streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.interior/icon.png rename to streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.point/icon.png diff --git a/streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.interior/strings.en b/streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.point/strings.en similarity index 82% rename from streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.interior/strings.en rename to streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.point/strings.en index d0b0956d8..c8b8d84b3 100755 --- a/streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.interior/strings.en +++ b/streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.point/strings.en @@ -15,11 +15,14 @@ # limitations under the License. # -org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.interior.title=Geo Create Interior Point -org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.interior.description=Creates a Point from other Geometries greater than point +org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.point.title=Geo Derived Point Creation +org.apache.streampipes.processors.geo.jvm.jts.processor.derivedgeometry.point.description=Creates a Point from other Geometries greater than point geometry-key.title=JTS Geometry Event geometry-key.description=Single Geometry epsg-key.title=EPSG epsg-key.description=EPSG + +point-output-type-key.title=Point Type +point-output-type-key.description=Choose Output Type
