Revision: 5978 http://sourceforge.net/p/jump-pilot/code/5978 Author: ma15569 Date: 2018-10-12 11:45:51 +0000 (Fri, 12 Oct 2018) Log Message: ----------- Changed to org.openjump.sigle.utilities.geom.FeatureCollectionUtil methods which seem to work better
Modified Paths: -------------- core/trunk/src/org/openjump/core/ui/util/LayerableUtil.java Modified: core/trunk/src/org/openjump/core/ui/util/LayerableUtil.java =================================================================== --- core/trunk/src/org/openjump/core/ui/util/LayerableUtil.java 2018-10-12 09:26:28 UTC (rev 5977) +++ core/trunk/src/org/openjump/core/ui/util/LayerableUtil.java 2018-10-12 11:45:51 UTC (rev 5978) @@ -6,18 +6,16 @@ import java.io.IOException; import java.io.OutputStreamWriter; import java.nio.channels.FileChannel; -import java.util.BitSet; import java.util.HashMap; import java.util.Iterator; -import java.util.List; import org.apache.commons.io.FileUtils; import org.openjump.core.apitools.IOTools; -import org.openjump.core.geomutils.GeoUtils; import org.openjump.core.rasterimage.RasterImageIOUtils; import org.openjump.core.rasterimage.RasterImageLayer; import org.openjump.core.rasterimage.WorldFileHandler; import org.openjump.core.rasterimage.styler.SLDHandler; +import org.openjump.sigle.utilities.geom.FeatureCollectionUtil; import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jts.geom.Geometry; @@ -260,27 +258,33 @@ * * @param layer * @return boolean - true if the vector layer has only polygon/multipolygon - * geometries + * geometries (Shapefile model) */ public static boolean isPolygonalLayer(Layer layer) { final FeatureCollectionWrapper featureCollection = layer .getFeatureCollectionWrapper(); - final List<Feature> featureList = featureCollection.getFeatures(); - BitSet layerBit = new BitSet(); - BitSet currFeatureBit = new BitSet(); - if (featureList.size() > 0) { - final Geometry firstGeo = featureList.iterator().next() - .getGeometry(); - layerBit = GeoUtils.setBit(layerBit, firstGeo); // this is the layer - // type + if (FeatureCollectionUtil + .getFeatureCollectionDimension(featureCollection) == 2) { + + return true; + } else { + return false; } + } - for (final Feature feature : featureList) { - final Geometry geo = feature.getGeometry(); - currFeatureBit = GeoUtils.setBit(currFeatureBit, geo); - } - if (layerBit.get(GeoUtils.polyBit) - && currFeatureBit.get(GeoUtils.polyBit)) { + /** + * check if selected featureCollection has only polygons and/or + * multipolygons + * + * @param featureCollection + * @return boolean - true if the vector layer has only polygon/multipolygon + * geometries (Shapefile model) + */ + public static boolean isPolygonalLayer(FeatureCollection featureCollection) { + + if (FeatureCollectionUtil + .getFeatureCollectionDimension(featureCollection) == 2) { + return true; } else { return false; @@ -292,27 +296,32 @@ * * @param layer * @return boolean - true if the vector layer has only point/multipoint - * geometries + * geometries (Shapefile model) */ public static boolean isPointLayer(Layer layer) { final FeatureCollectionWrapper featureCollection = layer .getFeatureCollectionWrapper(); - final List<Feature> featureList = featureCollection.getFeatures(); - BitSet layerBit = new BitSet(); - BitSet currFeatureBit = new BitSet(); - if (featureList.size() > 0) { - final Geometry firstGeo = featureList.iterator().next() - .getGeometry(); - layerBit = GeoUtils.setBit(layerBit, firstGeo); // this is the layer - // type + if (FeatureCollectionUtil + .getFeatureCollectionDimension(featureCollection) == 0) { + + return true; + } else { + return false; } + } - for (final Feature feature : featureList) { - final Geometry geo = feature.getGeometry(); - currFeatureBit = GeoUtils.setBit(currFeatureBit, geo); - } - if (layerBit.get(GeoUtils.pointBit) - && currFeatureBit.get(GeoUtils.pointBit)) { + /** + * Check if selected featureCollection has only points and/or multipoints + * + * @param featureCollection + * @return boolean - true if the vector layer has only point/multipoint + * geometries (Shapefile model) + */ + public static boolean isPointLayer(FeatureCollection featureCollection) { + + if (FeatureCollectionUtil + .getFeatureCollectionDimension(featureCollection) == 0) { + return true; } else { return false; @@ -325,27 +334,35 @@ * * @param layer * @return boolean - true if the vector layer has only - * LineString/MultiLineString geometries + * LineString/MultiLineString geometries (Shapefile model) */ public static boolean isLinealLayer(Layer layer) { final FeatureCollectionWrapper featureCollection = layer .getFeatureCollectionWrapper(); - final List<Feature> featureList = featureCollection.getFeatures(); - BitSet layerBit = new BitSet(); - BitSet currFeatureBit = new BitSet(); - if (featureList.size() > 0) { - final Geometry firstGeo = featureList.iterator().next() - .getGeometry(); - layerBit = GeoUtils.setBit(layerBit, firstGeo); // this is the layer - // type + + if (FeatureCollectionUtil + .getFeatureCollectionDimension(featureCollection) == 1) { + + return true; + } else { + return false; } - for (final Feature feature : featureList) { - final Geometry geo = feature.getGeometry(); - currFeatureBit = GeoUtils.setBit(currFeatureBit, geo); - } - if (layerBit.get(GeoUtils.lineBit) - && currFeatureBit.get(GeoUtils.lineBit)) { + } + + /** + * Check if selected FeatureCollection has only linestring and/or + * multilinestring and/or multilinearings (Shapefile model) + * + * @param FeatureCollection + * @return boolean - true if the vector layer has only + * LineString/MultiLineString geometries (Shapefile model) + */ + public static boolean isLinealLayer(FeatureCollection featureCollection) { + + if (FeatureCollectionUtil + .getFeatureCollectionDimension(featureCollection) == 1) { + return true; } else { return false; @@ -353,37 +370,19 @@ } /** - * Layer.class + * Check if selected layer has geoemtries of different types * - * @return true if the selected layer has multiple geometry types ex. points - * with linestrings, polygons with points, etc It exclude collection - * of geometries and multigeometries ex. points with multipoints, - * linestrings with linearing, linestrings with multilinestrings, - * etc + * @return true if the selected layer has features of different geometries + * types (Shapefile model) (Shapefile model) */ public static boolean isMixedGeometryType(Layer layer) { final FeatureCollectionWrapper featureCollection = layer .getFeatureCollectionWrapper(); - final List<Feature> featureList = featureCollection.getFeatures(); - BitSet layerBit = new BitSet(); - BitSet currFeatureBit = new BitSet(); - if (featureList.size() > 0) { - final Geometry firstGeo = featureList.iterator().next() - .getGeometry(); - layerBit = GeoUtils.setBit(layerBit, firstGeo); // this is the layer - // type - } - for (Feature feature : featureList) { - final Geometry geo = feature.getGeometry(); - currFeatureBit = GeoUtils.setBit(currFeatureBit, geo); - } - if ((layerBit.get(GeoUtils.pointBit) && currFeatureBit - .get(GeoUtils.lineBit)) - || (layerBit.get(GeoUtils.polyBit) && currFeatureBit - .get(GeoUtils.lineBit)) - || (layerBit.get(GeoUtils.pointBit) && currFeatureBit - .get(GeoUtils.polyBit))) { + if ((FeatureCollectionUtil + .getFeatureCollectionDimension(featureCollection) == -1) + && featureCollection.size() > 0) { + return true; } else { return false; @@ -390,28 +389,20 @@ } } + /** + * Check if selected FeatureCollection has geoemtries of different types + * + * @return true if the selected layer has features of different geometries + * types (Shapefile model) + */ + public static boolean isMixedGeometryType( FeatureCollection featureCollection) { - final List<Feature> featureList = featureCollection.getFeatures(); - BitSet layerBit = new BitSet(); - BitSet currFeatureBit = new BitSet(); - if (featureList.size() > 0) { - final Geometry firstGeo = featureList.iterator().next() - .getGeometry(); - layerBit = GeoUtils.setBit(layerBit, firstGeo); // this is the layer - // type - } - for (Feature feature : featureList) { - final Geometry geo = feature.getGeometry(); - currFeatureBit = GeoUtils.setBit(currFeatureBit, geo); - } - if ((layerBit.get(GeoUtils.pointBit) && currFeatureBit - .get(GeoUtils.lineBit)) - || (layerBit.get(GeoUtils.polyBit) && currFeatureBit - .get(GeoUtils.lineBit)) - || (layerBit.get(GeoUtils.pointBit) && currFeatureBit - .get(GeoUtils.polyBit))) { + if ((FeatureCollectionUtil + .getFeatureCollectionDimension(featureCollection) == -1) + && featureCollection.size() > 0) { + return true; } else { return false; _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel