private static void accelerateGeometry(OGCGeometry ogcGeometry, Operator relateOperator) { // Recurse into GeometryCollections GeometryCursor cursor = ogcGeometry.getEsriGeometryCursor(); while (true) { com.esri.core.geometry.Geometry esriGeometry = cursor.next(); if (esriGeometry == null) { break; } relateOperator.accelerateGeometry(esriGeometry, null, Geometry.GeometryAccelerationDegree.enumMild); } }
public static boolean disjoint(Envelope envelope, OGCGeometry ogcGeometry) { GeometryCursor cursor = ogcGeometry.getEsriGeometryCursor(); while (true) { Geometry geometry = cursor.next(); if (geometry == null) { return true; } if (!GeometryEngine.disjoint(geometry, envelope, null)) { return false; } } }
public static boolean contains(OGCGeometry ogcGeometry, Envelope envelope) { GeometryCursor cursor = ogcGeometry.getEsriGeometryCursor(); while (true) { Geometry geometry = cursor.next(); if (geometry == null) { return false; } if (GeometryEngine.contains(geometry, envelope, null)) { return true; } } }
public static int getPointCount(OGCGeometry ogcGeometry) { GeometryCursor cursor = ogcGeometry.getEsriGeometryCursor(); int points = 0; while (true) { com.esri.core.geometry.Geometry geometry = cursor.next(); if (geometry == null) { return points; } if (geometry.isEmpty()) { continue; } if (geometry instanceof Point) { points++; } else { points += ((MultiVertexGeometry) geometry).getPointCount(); } } }
public static Envelope getEnvelope(OGCGeometry ogcGeometry) { GeometryCursor cursor = ogcGeometry.getEsriGeometryCursor(); Envelope overallEnvelope = new Envelope(); while (true) { Geometry geometry = cursor.next(); if (geometry == null) { return overallEnvelope; } Envelope envelope = new Envelope(); geometry.queryEnvelope(envelope); overallEnvelope.merge(envelope); } }
OGCGeometry unionedGeometry = createFromEsriGeometry(operator.next(), null); if (unionedGeometry != null) { outputs.add(unionedGeometry);
@Description("Returns true if the input geometry is well formed") @ScalarFunction("ST_IsValid") @SqlType(BOOLEAN) public static boolean stIsValid(@SqlType(GEOMETRY_TYPE_NAME) Slice input) { GeometryCursor cursor = deserialize(input).getEsriGeometryCursor(); while (true) { com.esri.core.geometry.Geometry geometry = cursor.next(); if (geometry == null) { return true; } if (!OperatorSimplifyOGC.local().isSimpleOGC(geometry, null, true, null, null)) { return false; } } }
@Description("Returns the 2D Euclidean area of a geometry") @ScalarFunction("ST_Area") @SqlType(DOUBLE) public static double stArea(@SqlType(GEOMETRY_TYPE_NAME) Slice input) { OGCGeometry geometry = deserialize(input); // The Esri geometry library does not support area for geometry collections. We compute the area // of collections by summing the area of the individual components. GeometryType type = GeometryType.getForEsriGeometryType(geometry.geometryType()); if (type == GeometryType.GEOMETRY_COLLECTION) { double area = 0.0; GeometryCursor cursor = geometry.getEsriGeometryCursor(); while (true) { com.esri.core.geometry.Geometry esriGeometry = cursor.next(); if (esriGeometry == null) { return area; } area += esriGeometry.calculateArea2D(); } } return geometry.getEsriGeometry().calculateArea2D(); }
NonSimpleResult result = new NonSimpleResult(); while (true) { com.esri.core.geometry.Geometry geometry = cursor.next(); if (geometry == null) { return null;
@Description("Converts a Geometry object to a SphericalGeography object") @ScalarFunction("to_spherical_geography") @SqlType(SPHERICAL_GEOGRAPHY_TYPE_NAME) public static Slice toSphericalGeography(@SqlType(GEOMETRY_TYPE_NAME) Slice input) { // "every point in input is in range" <=> "the envelope of input is in range" Envelope envelope = deserializeEnvelope(input); if (envelope != null) { checkLatitude(envelope.getYMin()); checkLatitude(envelope.getYMax()); checkLongitude(envelope.getXMin()); checkLongitude(envelope.getXMax()); } OGCGeometry geometry = deserialize(input); if (geometry.is3D()) { throw new PrestoException(INVALID_FUNCTION_ARGUMENT, "Cannot convert 3D geometry to a spherical geography"); } GeometryCursor cursor = geometry.getEsriGeometryCursor(); while (true) { com.esri.core.geometry.Geometry subGeometry = cursor.next(); if (subGeometry == null) { break; } if (!GEOMETRY_TYPES_FOR_SPHERICAL_GEOGRAPHY.contains(subGeometry.getType())) { throw new PrestoException(INVALID_FUNCTION_ARGUMENT, "Cannot convert geometry of this type to spherical geography: " + subGeometry.getType()); } } return input; }
OperatorSymmetricDifferenceCursor(GeometryCursor inputGeoms, GeometryCursor rightGeom, SpatialReference sr, ProgressTracker progress_tracker) { m_bEmpty = rightGeom == null; m_index = -1; m_inputGeoms = inputGeoms; m_spatial_reference = sr; m_rightGeom = rightGeom.next(); m_progress_tracker = progress_tracker; }
@Override public Geometry next() { // TODO Auto-generated method stub Geometry geom = m_geoms.next(); if (geom == null) return null; return Generalize(geom); }
@Override public Geometry execute(Geometry geom1, Geometry geom2, SpatialReference sr, ProgressTracker progressTracker) { Geometry[] geomArray = new Geometry[] { geom1, geom2 }; SimpleGeometryCursor inputGeometries = new SimpleGeometryCursor( geomArray); GeometryCursor outputCursor = execute(inputGeometries, sr, progressTracker); return outputCursor.next(); }
@Override public Geometry execute(Geometry geom, SpatialReference spatialRef, boolean bForceSimplify, ProgressTracker progressTracker) { SimpleGeometryCursor inputCursor = new SimpleGeometryCursor(geom); GeometryCursor outputCursor = execute(inputCursor, spatialRef, bForceSimplify, progressTracker); return outputCursor.next(); } }
@Override public Geometry execute(Geometry geom, SpatialReference spatialRef, boolean bForceSimplify, ProgressTracker progressTracker) { SimpleGeometryCursor inputCursor = new SimpleGeometryCursor(geom); GeometryCursor outputCursor = execute(inputCursor, spatialRef, bForceSimplify, progressTracker); return outputCursor.next(); } }
@Override public Geometry execute(Geometry inputGeometry, SpatialReference sr, double distance, ProgressTracker progressTracker) { SimpleGeometryCursor inputCursor = new SimpleGeometryCursor( inputGeometry); double[] distances = new double[1]; distances[0] = distance; GeometryCursor outputCursor = execute(inputCursor, sr, distances, false, progressTracker); return outputCursor.next(); }
@Override public Geometry execute(Geometry geom, Envelope2D envelope, SpatialReference spatialRef, ProgressTracker progressTracker) { SimpleGeometryCursor inputCursor = new SimpleGeometryCursor(geom); GeometryCursor outputCursor = execute(inputCursor, envelope, spatialRef, progressTracker); return outputCursor.next(); }