/** * Returns TRUE when this geometry has exactly same type, properties, and * coordinates as the other geometry. */ @Override public boolean equals(Object other) { if (other == null) return false; if (other == this) return true; if (other.getClass() != getClass()) return false; return m_impl.equals(((MultiPoint) other)._getImpl()); }
/** * Returns TRUE when this geometry has exactly same type, properties, and * coordinates as the other geometry. */ @Override public boolean equals(Object other) { if (other == null) return false; if (other == this) return true; if (other.getClass() != getClass()) return false; return m_impl.equals(((MultiPoint) other)._getImpl()); }
private double bruteForceMultiPointMultiPoint_( /* const */MultiPoint geometryA, /* const */ MultiPoint geometryB, boolean geometriesAreDisjoint) { double minSqrDistance = NumberUtils.doubleMax(); Point2D pointA = new Point2D(); Point2D pointB = new Point2D(); double sqrDistance = minSqrDistance; /* const */MultiPointImpl multiPointImplA = (/* const */MultiPointImpl) geometryA ._getImpl(); /* const */MultiPointImpl multiPointImplB = (/* const */MultiPointImpl) geometryB ._getImpl(); int pointCountA = multiPointImplA.getPointCount(); int pointCountB = multiPointImplB.getPointCount(); for (int i = 0; i < pointCountA; i++) { multiPointImplA.getXY(i, pointA); if (pointCountB > 1 && m_env2DgeometryB.sqrDistance(pointA) > minSqrDistance) continue; for (int j = 0; j < pointCountB; j++) { multiPointImplB.getXY(j, pointB); sqrDistance = Point2D.sqrDistance(pointA, pointB); if (sqrDistance < minSqrDistance) { if (sqrDistance == 0.0) return 0.0; minSqrDistance = sqrDistance; } } } return Math.sqrt(minSqrDistance); }
private double bruteForceMultiPointMultiPoint_( /* const */MultiPoint geometryA, /* const */ MultiPoint geometryB, boolean geometriesAreDisjoint) { double minSqrDistance = NumberUtils.doubleMax(); Point2D pointA = new Point2D(); Point2D pointB = new Point2D(); double sqrDistance = minSqrDistance; /* const */MultiPointImpl multiPointImplA = (/* const */MultiPointImpl) geometryA ._getImpl(); /* const */MultiPointImpl multiPointImplB = (/* const */MultiPointImpl) geometryB ._getImpl(); int pointCountA = multiPointImplA.getPointCount(); int pointCountB = multiPointImplB.getPointCount(); for (int i = 0; i < pointCountA; i++) { multiPointImplA.getXY(i, pointA); if (pointCountB > 1 && m_env2DgeometryB.sqrDistance(pointA) > minSqrDistance) continue; for (int j = 0; j < pointCountB; j++) { multiPointImplB.getXY(j, pointB); sqrDistance = Point2D.sqrDistance(pointA, pointB); if (sqrDistance < minSqrDistance) { if (sqrDistance == 0.0) return 0.0; minSqrDistance = sqrDistance; } } } return Math.sqrt(minSqrDistance); }
static Geometry pointMinusMultiPoint_(Point point, MultiPoint multi_point, double tolerance, ProgressTracker progress_tracker) { MultiPointImpl multipointImpl = (MultiPointImpl) (multi_point ._getImpl()); AttributeStreamOfDbl position = (AttributeStreamOfDbl) multipointImpl .getAttributeStreamRef(VertexDescription.Semantics.POSITION); int point_count = multi_point.getPointCount(); Point2D point2D = point.getXY(); Point2D pt = new Point2D(); double tolerance_cluster = tolerance * Math.sqrt(2.0) * 1.00001; double tolerance_cluster_sq = tolerance_cluster * tolerance_cluster; for (int i = 0; i < point_count; i++) { position.read(2 * i, pt); double sqr_dist = Point2D.sqrDistance(pt, point2D); if (sqr_dist <= tolerance_cluster_sq) return point.createInstance();// return an empty point. } return point;// return the input point }
static Geometry pointMinusMultiPoint_(Point point, MultiPoint multi_point, double tolerance, ProgressTracker progress_tracker) { MultiPointImpl multipointImpl = (MultiPointImpl) (multi_point ._getImpl()); AttributeStreamOfDbl position = (AttributeStreamOfDbl) multipointImpl .getAttributeStreamRef(VertexDescription.Semantics.POSITION); int point_count = multi_point.getPointCount(); Point2D point2D = point.getXY(); Point2D pt = new Point2D(); double tolerance_cluster = tolerance * Math.sqrt(2.0) * 1.00001; double tolerance_cluster_sq = tolerance_cluster * tolerance_cluster; for (int i = 0; i < point_count; i++) { position.read(2 * i, pt); double sqr_dist = Point2D.sqrDistance(pt, point2D); if (sqr_dist <= tolerance_cluster_sq) return point.createInstance();// return an empty point. } return point;// return the input point }
static Geometry multiPointMinusPoint_(MultiPoint multi_point, Point point, double tolerance, ProgressTracker progress_tracker) { MultiPointImpl multipointImpl = (MultiPointImpl) (multi_point ._getImpl()); AttributeStreamOfDbl position = (AttributeStreamOfDbl) (multipointImpl .getAttributeStreamRef(VertexDescription.Semantics.POSITION));
static Geometry multiPointMinusPoint_(MultiPoint multi_point, Point point, double tolerance, ProgressTracker progress_tracker) { MultiPointImpl multipointImpl = (MultiPointImpl) (multi_point ._getImpl()); AttributeStreamOfDbl position = (AttributeStreamOfDbl) (multipointImpl .getAttributeStreamRef(VertexDescription.Semantics.POSITION));
private static void exportMultiPointToGeoJson_(int export_flags, MultiPoint multipoint, JsonWriter json_writer) { MultiPointImpl multipoint_impl = (MultiPointImpl) multipoint._getImpl(); int point_count = multipoint_impl.getPointCount(); int precision = 17 - (31 & (export_flags >> 13)); boolean bFixedPoint = (GeoJsonExportFlags.geoJsonExportPrecisionFixedPoint & export_flags) != 0; boolean b_export_zs = multipoint_impl.hasAttribute(VertexDescription.Semantics.Z) && (export_flags & GeoJsonExportFlags.geoJsonExportStripZs) == 0; boolean b_export_ms = multipoint_impl.hasAttribute(VertexDescription.Semantics.M) && (export_flags & GeoJsonExportFlags.geoJsonExportStripMs) == 0; if (!b_export_zs && b_export_ms) throw new IllegalArgumentException("invalid argument"); AttributeStreamOfDbl position = null; AttributeStreamOfDbl zs = null; AttributeStreamOfDbl ms = null; if (point_count > 0) { position = (AttributeStreamOfDbl) multipoint_impl.getAttributeStreamRef(Semantics.POSITION); if (b_export_zs) { if (multipoint_impl._attributeStreamIsAllocated(Semantics.Z)) zs = (AttributeStreamOfDbl) multipoint_impl.getAttributeStreamRef(Semantics.Z); } if (b_export_ms) { if (multipoint_impl._attributeStreamIsAllocated(Semantics.M)) ms = (AttributeStreamOfDbl) multipoint_impl.getAttributeStreamRef(Semantics.M); } } multiPointTaggedText_(precision, bFixedPoint, b_export_zs, b_export_ms, zs, ms, position, point_count, json_writer); }
private Geometry createMultiPointFromStreams_() { assert (m_position != null); assert (m_paths == null); assert (m_path_flags == null); MultiPoint multi_point = new MultiPoint(); MultiPointImpl multi_point_impl = (MultiPointImpl) multi_point ._getImpl(); multi_point_impl.setAttributeStreamRef(Semantics.POSITION, m_position); if (m_b_has_zs) { assert (m_zs != null); multi_point_impl.setAttributeStreamRef(Semantics.Z, m_zs); } if (m_b_has_ms) { assert (m_ms != null); multi_point_impl.setAttributeStreamRef(Semantics.M, m_ms); } multi_point_impl.resize(m_position.size() / 2); multi_point_impl.notifyModified(MultiVertexGeometryImpl.DirtyFlags.DirtyAll); return multi_point; }
private static void exportMultiPointToGeoJson_(int export_flags, MultiPoint multipoint, JsonWriter json_writer) { MultiPointImpl multipoint_impl = (MultiPointImpl) multipoint._getImpl(); int point_count = multipoint_impl.getPointCount(); int precision = 17 - (31 & (export_flags >> 13)); boolean bFixedPoint = (GeoJsonExportFlags.geoJsonExportPrecisionFixedPoint & export_flags) != 0; boolean b_export_zs = multipoint_impl.hasAttribute(VertexDescription.Semantics.Z) && (export_flags & GeoJsonExportFlags.geoJsonExportStripZs) == 0; boolean b_export_ms = multipoint_impl.hasAttribute(VertexDescription.Semantics.M) && (export_flags & GeoJsonExportFlags.geoJsonExportStripMs) == 0; if (!b_export_zs && b_export_ms) throw new IllegalArgumentException("invalid argument"); AttributeStreamOfDbl position = null; AttributeStreamOfDbl zs = null; AttributeStreamOfDbl ms = null; if (point_count > 0) { position = (AttributeStreamOfDbl) multipoint_impl.getAttributeStreamRef(Semantics.POSITION); if (b_export_zs) { if (multipoint_impl._attributeStreamIsAllocated(Semantics.Z)) zs = (AttributeStreamOfDbl) multipoint_impl.getAttributeStreamRef(Semantics.Z); } if (b_export_ms) { if (multipoint_impl._attributeStreamIsAllocated(Semantics.M)) ms = (AttributeStreamOfDbl) multipoint_impl.getAttributeStreamRef(Semantics.M); } } multiPointTaggedText_(precision, bFixedPoint, b_export_zs, b_export_ms, zs, ms, position, point_count, json_writer); }
private Geometry createMultiPointFromStreams_() { assert (m_position != null); assert (m_paths == null); assert (m_path_flags == null); MultiPoint multi_point = new MultiPoint(); MultiPointImpl multi_point_impl = (MultiPointImpl) multi_point ._getImpl(); multi_point_impl.setAttributeStreamRef(Semantics.POSITION, m_position); if (m_b_has_zs) { assert (m_zs != null); multi_point_impl.setAttributeStreamRef(Semantics.Z, m_zs); } if (m_b_has_ms) { assert (m_ms != null); multi_point_impl.setAttributeStreamRef(Semantics.M, m_ms); } multi_point_impl.resize(m_position.size() / 2); multi_point_impl.notifyModified(MultiVertexGeometryImpl.DirtyFlags.DirtyAll); return multi_point; }
static void exportMultiPointToWkt(int export_flags, MultiPoint multipoint, StringBuilder string) { MultiPointImpl multipoint_impl = (MultiPointImpl) multipoint._getImpl();
static void exportMultiPointToWkt(int export_flags, MultiPoint multipoint, StringBuilder string) { MultiPointImpl multipoint_impl = (MultiPointImpl) multipoint._getImpl();
int createGeometry(Geometry.Type geometry_type, VertexDescription description) { int newgeom = newGeometry_(geometry_type.value()); if (m_vertices == null) { m_vertices_mp = new MultiPoint(description); m_vertices = (MultiPointImpl) m_vertices_mp._getImpl(); } else m_vertices_mp.mergeVertexDescription(description); m_vertex_description = m_vertices_mp.getDescription();// this // description // will be a // merge of // existing // description // and the // description // of the // multi_path m_b_has_attributes = m_vertex_description.getAttributeCount() > 1; if (m_first_geometry == -1) { m_first_geometry = newgeom; m_last_geometry = newgeom; } else { setPrevGeometry_(newgeom, m_last_geometry); setNextGeometry_(m_last_geometry, newgeom); m_last_geometry = newgeom; } return newgeom; }
int createGeometry(Geometry.Type geometry_type, VertexDescription description) { int newgeom = newGeometry_(geometry_type.value()); if (m_vertices == null) { m_vertices_mp = new MultiPoint(description); m_vertices = (MultiPointImpl) m_vertices_mp._getImpl(); } else m_vertices_mp.mergeVertexDescription(description); m_vertex_description = m_vertices_mp.getDescription();// this // description // will be a // merge of // existing // description // and the // description // of the // multi_path m_b_has_attributes = m_vertex_description.getAttributeCount() > 1; if (m_first_geometry == -1) { m_first_geometry = newgeom; m_last_geometry = newgeom; } else { setPrevGeometry_(newgeom, m_last_geometry); setNextGeometry_(m_last_geometry, newgeom); m_last_geometry = newgeom; } return newgeom; }
((MultiVertexGeometryImpl) dst._getImpl()).setIsSimple( GeometryXSimple.Strong, m_toleranceSimplify, false); return dst;
multi_point_impl = (MultiPointImpl) multi_point._getImpl();
(MultiPointImpl) (multipoint_b._getImpl()), envInter); QuadTreeImpl.QuadTreeIteratorImpl qtIterB = quadTreeB.getIterator();
(MultiPointImpl) (multipoint_b._getImpl()), envInter); QuadTreeImpl.QuadTreeIteratorImpl qtIterB = quadTreeB.getIterator();