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 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; } } }
private static void writeSimpleGeometry(DynamicSliceOutput output, GeometrySerializationType type, OGCGeometry geometry) { output.appendByte(type.code()); Geometry esriGeometry = requireNonNull(geometry.getEsriGeometry(), "esriGeometry is null"); byte[] shape = geometryToEsriShape(esriGeometry); output.appendBytes(shape); }
@Override public String asText() { return GeometryEngine.geometryToWkt(getEsriGeometry(), WktExportFlags.wktExportMultiPoint); }
public static Geom ST_PolyFromText(String wkt, int srid) { final Geometry g = GeometryEngine.geometryFromWkt(wkt, WktImportFlags.wktImportDefaults, Geometry.Type.Polygon); return bind(g, srid); }
@Override public BaseRoad next() throws SourceException { BaseRoad road = null; do { if (!iterator.hasNext()) { return null; } Road _road = iterator.next(); if (_road.id() % 2 == 1) { continue; } road = _road.base(); } while (road == null || exclusions != null && exclusions.contains(road.type()) || polygon != null && !GeometryEngine.contains(polygon, road.geometry(), SpatialReference.create(4326)) && !GeometryEngine.overlaps(polygon, road.geometry(), SpatialReference.create(4326))); return road; } };
@Override public void output() { if (nonNullCount.value > 0) { out.isSet = 1; java.util.List<com.esri.core.geometry.Geometry> tmp = (java.util.ArrayList<com.esri.core.geometry.Geometry>) value.obj; com.esri.core.geometry.SpatialReference spatialRef = null; if (srid.value != 0){ spatialRef = com.esri.core.geometry.SpatialReference.create(4326); } com.esri.core.geometry.Geometry[] geomArr = (com.esri.core.geometry.Geometry[]) tmp.toArray(new com.esri.core.geometry.Geometry[0]); com.esri.core.geometry.Geometry geom = com.esri.core.geometry.GeometryEngine.union(geomArr, spatialRef); com.esri.core.geometry.ogc.OGCGeometry unionGeom = com.esri.core.geometry.ogc.OGCGeometry.createFromEsriGeometry(geom, spatialRef); java.nio.ByteBuffer unionGeomBytes = unionGeom.asBinary(); int outputSize = unionGeomBytes.remaining(); buf = out.buffer = buf.reallocIfNeeded(outputSize); out.start = 0; out.end = outputSize; buf.setBytes(0, unionGeomBytes); } else { out.isSet = 0; } }
public boolean overlaps(OGCGeometry another) { if (another.geometryType() == OGCConcreteGeometryCollection.TYPE) { // TODO throw new UnsupportedOperationException(); } com.esri.core.geometry.Geometry geom1 = getEsriGeometry(); com.esri.core.geometry.Geometry geom2 = another.getEsriGeometry(); return com.esri.core.geometry.GeometryEngine.overlaps(geom1, geom2, getEsriSpatialReference()); }
/** Returns whether {@code geom1} and {@code geom2} are within * {@code distance} of each other. */ public static boolean ST_DWithin(Geom geom1, Geom geom2, double distance) { final double distance1 = GeometryEngine.distance(geom1.g(), geom2.g(), geom1.sr()); return distance1 <= distance; }
/** Returns whether {@code geom1} equals {@code geom2} and their coordinates * and component Geometries are listed in the same order. */ public static boolean ST_OrderingEquals(Geom geom1, Geom geom2) { return GeometryEngine.equals(geom1.g(), geom2.g(), geom1.sr()); }
public boolean crosses(OGCGeometry another) { if (another.geometryType() == OGCConcreteGeometryCollection.TYPE) { //TODO throw new UnsupportedOperationException(); } com.esri.core.geometry.Geometry geom1 = getEsriGeometry(); com.esri.core.geometry.Geometry geom2 = another.getEsriGeometry(); return com.esri.core.geometry.GeometryEngine.crosses(geom1, geom2, getEsriSpatialReference()); }
@Override public String asText() { return GeometryEngine.geometryToWkt(getEsriGeometry(), WktExportFlags.wktExportMultiLineString); }
public static Geom ST_MLineFromText(String wkt, int srid) { final Geometry g = GeometryEngine.geometryFromWkt(wkt, WktImportFlags.wktImportDefaults, Geometry.Type.Unknown); // NOTE: there is no Geometry.Type.MultiLine return bind(g, srid); }
@Override public BaseRoad next() throws SourceException { if (!isOpen()) { throw new SourceException("File is closed or invalid."); } try { BaseRoad road = null; do { road = (BaseRoad) reader.readObject(); if (road == null) { return null; } } while (exclusions != null && exclusions.contains(road.type()) || polygon != null && !GeometryEngine.contains(polygon, road.geometry(), SpatialReference.create(4326)) && !GeometryEngine.overlaps(polygon, road.geometry(), SpatialReference.create(4326))); return road; } catch (ClassNotFoundException e) { throw new SourceException("File is corrupted, read object is not a road."); } catch (IOException e) { throw new SourceException("Reading file failed: " + e.getMessage()); } } }
/** Computes the union of {@code geom1} and {@code geom2}. */ public static Geom ST_Union(Geom geom1, Geom geom2) { SpatialReference sr = geom1.sr(); final Geometry g = GeometryEngine.union(new Geometry[]{geom1.g(), geom2.g()}, sr); return bind(g, sr); }
public boolean overlaps(OGCGeometry another) { if (another.geometryType() == OGCConcreteGeometryCollection.TYPE) { // TODO throw new UnsupportedOperationException(); } com.esri.core.geometry.Geometry geom1 = getEsriGeometry(); com.esri.core.geometry.Geometry geom2 = another.getEsriGeometry(); return com.esri.core.geometry.GeometryEngine.overlaps(geom1, geom2, getEsriSpatialReference()); }
/** Returns whether {@code geom1} and {@code geom2} are within * {@code distance} of each other. */ public static boolean ST_DWithin(Geom geom1, Geom geom2, double distance) { final double distance1 = GeometryEngine.distance(geom1.g(), geom2.g(), geom1.sr()); return distance1 <= distance; }
/** Returns whether {@code geom1} equals {@code geom2} and their coordinates * and component Geometries are listed in the same order. */ public static boolean ST_OrderingEquals(Geom geom1, Geom geom2) { return GeometryEngine.equals(geom1.g(), geom2.g(), geom1.sr()); }