bossenti commented on code in PR #1303: URL: https://github.com/apache/streampipes/pull/1303#discussion_r1111199111
########## streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/jts/helper/buffer/JoinStyle.java: ########## @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.streampipes.processors.geo.jvm.jts.helper.buffer; + +public enum JoinStyle { Review Comment: Just as an idea: you could abstract your three enums here But this might also a bit over-engineered 😅 ########## streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/jts/processor/buffergeometry/BufferGeomProcessor.java: ########## @@ -0,0 +1,224 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.streampipes.processors.geo.jvm.jts.processor.buffergeometry; + +import org.apache.streampipes.commons.exceptions.SpRuntimeException; +import org.apache.streampipes.model.DataProcessorType; +import org.apache.streampipes.model.graph.DataProcessorDescription; +import org.apache.streampipes.model.runtime.Event; +import org.apache.streampipes.model.schema.PropertyScope; +import org.apache.streampipes.processors.geo.jvm.jts.helper.SpGeometryBuilder; +import org.apache.streampipes.processors.geo.jvm.jts.helper.SpReprojectionBuilder; +import org.apache.streampipes.processors.geo.jvm.jts.helper.buffer.BufferSide; +import org.apache.streampipes.processors.geo.jvm.jts.helper.buffer.CapStyle; +import org.apache.streampipes.processors.geo.jvm.jts.helper.buffer.JoinStyle; +import org.apache.streampipes.processors.geo.jvm.jts.helper.buffer.SpBufferBuilder; +import org.apache.streampipes.sdk.builder.ProcessingElementBuilder; +import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder; +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; +import org.apache.streampipes.wrapper.routing.SpOutputCollector; +import org.apache.streampipes.wrapper.standalone.ProcessorParams; +import org.apache.streampipes.wrapper.standalone.StreamPipesDataProcessor; + +import org.locationtech.jts.geom.Geometry; +import org.opengis.util.FactoryException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class BufferGeomProcessor extends StreamPipesDataProcessor { + public static final String GEOM_KEY = "geometry-key"; + public static final String EPSG_KEY = "epsg-key"; + public static final String CAP_KEY = "cap-style-key"; + public static final String SEGMENTS_KEY = "segments-key"; + public static final String SIMPLIFY_FACTOR_KEY = "simplify-factor-key"; + public static final String DISTANCE_KEY = "distance-key"; + public static final String JOIN_KEY = "join-style-key"; + public static final String MITRE_LIMIT_KEY = "mitre-limit-key"; + public static final String SIDE_KEY = "side-key"; + public static final String GEOM_RUNTIME = "geometry-buffer"; + public static final String EPSG_RUNTIME = "epsg-buffer"; + private String geometryMapper; + private String epsgMapper; + private Integer capStyle; + private Integer joinStyle; + private Integer side; + private Double mitreLimit; + private Integer segments; + private Double simplifyFactor; + private Double distance; + private Boolean singleSided; + private static final Logger LOG = LoggerFactory.getLogger(BufferGeomProcessor.class); + + @Override + public DataProcessorDescription declareModel() { + return ProcessingElementBuilder.create("org.apache.streampipes.processors.geo.jvm.jts.processor.buffergeometry") + .category(DataProcessorType.GEO) + .withAssets(Assets.DOCUMENTATION, Assets.ICON) + .withLocales(Locales.EN) + .requiredStream(StreamRequirementsBuilder + .create() + .requiredPropertyWithUnaryMapping( + EpRequirements.domainPropertyReq("http://www.opengis.net/ont/geosparql#Geometry"), + Labels.withId(GEOM_KEY), + PropertyScope.MEASUREMENT_PROPERTY) + .requiredPropertyWithUnaryMapping( + EpRequirements.domainPropertyReq("http://data.ign.fr/def/ignf#CartesianCS"), + Labels.withId(EPSG_KEY), + PropertyScope.MEASUREMENT_PROPERTY) + .build()) + .outputStrategy(OutputStrategies.append( + EpProperties.stringEp( + Labels.withId(GEOM_KEY), + GEOM_RUNTIME, + "http://www.opengis.net/ont/geosparql#Geometry" Review Comment: can we add them to the vocabulary? ########## streampipes-extensions/streampipes-processors-geo-jvm/src/main/java/org/apache/streampipes/processors/geo/jvm/jts/processor/buffergeometry/BufferGeomProcessor.java: ########## @@ -0,0 +1,224 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.streampipes.processors.geo.jvm.jts.processor.buffergeometry; + +import org.apache.streampipes.commons.exceptions.SpRuntimeException; +import org.apache.streampipes.model.DataProcessorType; +import org.apache.streampipes.model.graph.DataProcessorDescription; +import org.apache.streampipes.model.runtime.Event; +import org.apache.streampipes.model.schema.PropertyScope; +import org.apache.streampipes.processors.geo.jvm.jts.helper.SpGeometryBuilder; +import org.apache.streampipes.processors.geo.jvm.jts.helper.SpReprojectionBuilder; +import org.apache.streampipes.processors.geo.jvm.jts.helper.buffer.BufferSide; +import org.apache.streampipes.processors.geo.jvm.jts.helper.buffer.CapStyle; +import org.apache.streampipes.processors.geo.jvm.jts.helper.buffer.JoinStyle; +import org.apache.streampipes.processors.geo.jvm.jts.helper.buffer.SpBufferBuilder; +import org.apache.streampipes.sdk.builder.ProcessingElementBuilder; +import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder; +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; +import org.apache.streampipes.wrapper.routing.SpOutputCollector; +import org.apache.streampipes.wrapper.standalone.ProcessorParams; +import org.apache.streampipes.wrapper.standalone.StreamPipesDataProcessor; + +import org.locationtech.jts.geom.Geometry; +import org.opengis.util.FactoryException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class BufferGeomProcessor extends StreamPipesDataProcessor { + public static final String GEOM_KEY = "geometry-key"; + public static final String EPSG_KEY = "epsg-key"; + public static final String CAP_KEY = "cap-style-key"; + public static final String SEGMENTS_KEY = "segments-key"; + public static final String SIMPLIFY_FACTOR_KEY = "simplify-factor-key"; + public static final String DISTANCE_KEY = "distance-key"; + public static final String JOIN_KEY = "join-style-key"; + public static final String MITRE_LIMIT_KEY = "mitre-limit-key"; + public static final String SIDE_KEY = "side-key"; + public static final String GEOM_RUNTIME = "geometry-buffer"; + public static final String EPSG_RUNTIME = "epsg-buffer"; + private String geometryMapper; + private String epsgMapper; + private Integer capStyle; + private Integer joinStyle; + private Integer side; + private Double mitreLimit; + private Integer segments; + private Double simplifyFactor; + private Double distance; + private Boolean singleSided; + private static final Logger LOG = LoggerFactory.getLogger(BufferGeomProcessor.class); + + @Override + public DataProcessorDescription declareModel() { + return ProcessingElementBuilder.create("org.apache.streampipes.processors.geo.jvm.jts.processor.buffergeometry") + .category(DataProcessorType.GEO) + .withAssets(Assets.DOCUMENTATION, Assets.ICON) + .withLocales(Locales.EN) + .requiredStream(StreamRequirementsBuilder + .create() + .requiredPropertyWithUnaryMapping( + EpRequirements.domainPropertyReq("http://www.opengis.net/ont/geosparql#Geometry"), + Labels.withId(GEOM_KEY), + PropertyScope.MEASUREMENT_PROPERTY) + .requiredPropertyWithUnaryMapping( + EpRequirements.domainPropertyReq("http://data.ign.fr/def/ignf#CartesianCS"), + Labels.withId(EPSG_KEY), + PropertyScope.MEASUREMENT_PROPERTY) + .build()) + .outputStrategy(OutputStrategies.append( + EpProperties.stringEp( + Labels.withId(GEOM_KEY), + GEOM_RUNTIME, + "http://www.opengis.net/ont/geosparql#Geometry" + ), + EpProperties.numberEp( + Labels.withId(EPSG_KEY), + EPSG_RUNTIME, + "http://data.ign.fr/def/ignf#CartesianCS" + ) + ) + ) + .requiredSingleValueSelection( + Labels.withId(CAP_KEY), + Options.from( + CapStyle.Square.name(), + CapStyle.Flat.name(), + CapStyle.Round.name()) + ) + .requiredSingleValueSelection( + Labels.withId(JOIN_KEY), + Options.from( + JoinStyle.Bevel.name(), + JoinStyle.Mitre.name(), + JoinStyle.Round.name()) + ) + .requiredSingleValueSelection( + Labels.withId(SIDE_KEY), + Options.from( + BufferSide.Both.name(), + BufferSide.Left.name(), + BufferSide.Right.name()) + ) + .requiredIntegerParameter( + Labels.withId(MITRE_LIMIT_KEY), + 5) + .requiredIntegerParameter( + Labels.withId(SEGMENTS_KEY), + 8 + ) + .requiredFloatParameter( + Labels.withId(SIMPLIFY_FACTOR_KEY), + 0.01f + ) + .requiredFloatParameter( + Labels.withId(DISTANCE_KEY) + ) + .build(); + } + + @Override + public void onInvocation(ProcessorParams parameters, SpOutputCollector spOutputCollector, + EventProcessorRuntimeContext runtimeContext) throws SpRuntimeException { + + try { + if (SpReprojectionBuilder.isSisConfigurationValid()){ + LOG.info("SIS DB Settings successful checked "); + } else { + LOG.warn("The required EPSG database is not imported"); Review Comment: Maybe you can provide some information on what to do in such a case? ########## streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.buffergeometry/documentation.md: ########## @@ -0,0 +1,96 @@ +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one or more + ~ contributor license agreements. See the NOTICE file distributed with + ~ this work for additional information regarding copyright ownership. + ~ The ASF licenses this file to You under the Apache License, Version 2.0 + ~ (the "License"); you may not use this file except in compliance with + ~ the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + ~ + --> + +## Buffer Geometry + +<p align="center"> + <img src="icon.png" width="150px;" class="pe-image-documentation"/> +</p> + +*** + +## Description + +Creates a buffer polygon geometry from a geometry +*** + +## Required inputs + +* WKT of a JTS Geometry +* Integer value representing EPSG code +* Distance +* Cap Style +* Join Style +* Mitre-Limit +* Side +* Simplify Factor +* Quadrant Segments +*** + +## Configuration + +### 1st parameter +Input Geometry + +### 2nd parameter +EPSG code value + +### 3rd parameter +Distance +The buffer distance around in geometry in meter + +### 4rd parameter +Cap Style Review Comment: What do you think of using the name as the actual caption instead of `3rd parameter` etc.? ########## streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.buffergeometry/documentation.md: ########## @@ -0,0 +1,96 @@ +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one or more + ~ contributor license agreements. See the NOTICE file distributed with + ~ this work for additional information regarding copyright ownership. + ~ The ASF licenses this file to You under the Apache License, Version 2.0 + ~ (the "License"); you may not use this file except in compliance with + ~ the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + ~ + --> + +## Buffer Geometry + +<p align="center"> + <img src="icon.png" width="150px;" class="pe-image-documentation"/> +</p> + +*** + +## Description + +Creates a buffer polygon geometry from a geometry +*** + +## Required inputs + +* WKT of a JTS Geometry +* Integer value representing EPSG code +* Distance +* Cap Style +* Join Style +* Mitre-Limit +* Side +* Simplify Factor +* Quadrant Segments +*** + +## Configuration + +### 1st parameter +Input Geometry + +### 2nd parameter +EPSG code value + +### 3rd parameter +Distance +The buffer distance around in geometry in meter + +### 4rd parameter +Cap Style +CAP_ROUND - the usual round end caps +CAP_FLAT - end caps are truncated flat at the line ends +CAP_SQUARE - end caps are squared off at the buffer distance beyond the line ends + +### 5rd parameter Review Comment: `5th` ########## streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.buffergeometry/documentation.md: ########## @@ -0,0 +1,96 @@ +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one or more + ~ contributor license agreements. See the NOTICE file distributed with + ~ this work for additional information regarding copyright ownership. + ~ The ASF licenses this file to You under the Apache License, Version 2.0 + ~ (the "License"); you may not use this file except in compliance with + ~ the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + ~ + --> + +## Buffer Geometry + +<p align="center"> + <img src="icon.png" width="150px;" class="pe-image-documentation"/> +</p> + +*** + +## Description + +Creates a buffer polygon geometry from a geometry +*** + +## Required inputs + +* WKT of a JTS Geometry +* Integer value representing EPSG code +* Distance +* Cap Style +* Join Style +* Mitre-Limit +* Side +* Simplify Factor +* Quadrant Segments +*** + +## Configuration + +### 1st parameter +Input Geometry + +### 2nd parameter +EPSG code value + +### 3rd parameter +Distance +The buffer distance around in geometry in meter + +### 4rd parameter +Cap Style +CAP_ROUND - the usual round end caps +CAP_FLAT - end caps are truncated flat at the line ends +CAP_SQUARE - end caps are squared off at the buffer distance beyond the line ends + +### 5rd parameter +Simplify Factor +The default simplify factor Provides an accuracy of about 1%, which matches the accuracy of the +default Quadrant Segments parameter. + +### 6rd parameter +Quadrant Segments +The default number of facets into which to divide a fillet of 90 degrees. + +### 7rd parameter +Join Style +Defines the corners in a buffer +JOIN_ROUND - the usual round join +JOIN_MITRE - corners are "sharp" (up to a distance limit) +JOIN_BEVEL - corners are beveled (clipped off). + +### 8rd parameter +Mitre-Limit +mitre ratio limit (only affects mitered join style) + +### 9rd parameter +Side +: 'left' or 'right' performs a single-sided buffer on the geometry, with the buffered side +relative to the direction of the line. This is only applicable to LINESTRING geometry and +does not affect POINT or POLYGON geometries. + +*** + +## Output + Review Comment: missing ########## streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.bufferpoint/documentation.md: ########## @@ -0,0 +1,79 @@ +<!-- + ~ Licensed to the Apache Software Foundation (ASF) under one or more + ~ contributor license agreements. See the NOTICE file distributed with + ~ this work for additional information regarding copyright ownership. + ~ The ASF licenses this file to You under the Apache License, Version 2.0 + ~ (the "License"); you may not use this file except in compliance with + ~ the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + ~ + --> + +## Buffer Point Geometry + +<p align="center"> + <img src="icon.png" width="150px;" class="pe-image-documentation"/> +</p> + +*** + +## Description + +Creates a buffer polygon geometry from a point geometry +*** + +## Required inputs + +* WKT of a JTS Point Geometry +* Integer value representing EPSG code +* Distance +* Cap Style +* Simplify Factor +* Quadrant Segments +*** + +## Configuration + + +### 1st parameter +Input Point Geometry + +### 2nd parameter +EPSG code value + +### 3rd parameter +Distance +The buffer distance around in geometry in meter + +### 4rd parameter +Cap Style +CAP_ROUND - the usual round end caps +CAP_SQUARE - end caps are squared off at the buffer distance beyond the line ends + + +### 5rd parameter +Simplify Factor +The default simplify factor Provides an accuracy of about 1%, which matches the accuracy of the +default Quadrant Segments parameter. + +### 6rd parameter +Quadrant Segments +The default number of facets into which to divide a fillet of 90 degrees. + +*** + +## Output + +<p align="center"> + <img src="output.png" width="500;" class="pe-image-documentation"/> Review Comment: image is missing not committed Plus: some description would be nice ########## streampipes-extensions/streampipes-processors-geo-jvm/src/main/resources/org.apache.streampipes.processors.geo.jvm.jts.processor.buffergeometry/strings.en: ########## @@ -0,0 +1,49 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +org.apache.streampipes.processors.geo.jvm.jts.processor.buffergeometry.title=Geo Buffer Geometry +org.apache.streampipes.processors.geo.jvm.jts.processor.buffergeometry.description=Creates a polygon buffer from a geometry + +geometry-key.title=JTS Geometry Event +geometry-key.description=Single Geometry + +epsg-key.title=EPSG +epsg-key.description=EPSG + +cap-style-key.title=Cap Style Parameter +cap-style-key.description= Cap style Review Comment: I'm really the opposite of a domain expert here, so maybe this is obvious, but I think in general the description could be a bit more descriptive. I wouldn't user that the user has read the documentation file -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
