public GeolatteGeometryEquality() { this( new GeometryPointEquality() ); }
private <P extends Position> boolean equals (Polygon<P> first, Polygon<P> second){ if (first.getNumInteriorRing() != second.getNumInteriorRing()) return false; if (!equals(first.getExteriorRing(), second.getExteriorRing())) return false; for (int i = 0; i < first.getNumInteriorRing(); i++) { if (!equals(first.getInteriorRingN(i), second.getInteriorRingN(i))) return false; } return true; }
private boolean equals(GeometryCollection first, GeometryCollection second) { if (first.getNumGeometries() != second.getNumGeometries()) return false; for (int i = 0; i < first.getNumGeometries(); i++) { if (! equals(first.getGeometryN(i), second.getGeometryN(i))) return false; } return true; } }
/** * {@inheritDoc} */ @Override public <P extends Position> boolean equals(Geometry<P> first, Geometry<P> second) { if (first == second) return true; if (first == null || second == null) return false; if (first.isEmpty() && second.isEmpty()) return true; if (first.isEmpty() || second.isEmpty()) return false; if (! first.getCoordinateReferenceSystem().equals(second.getCoordinateReferenceSystem())) return false; if (first.getGeometryType() != second.getGeometryType()) return false; if (first instanceof GeometryCollection) { assert(second instanceof GeometryCollection); return equals((GeometryCollection<?,?>)first, (GeometryCollection<?,?>)second); } if (first instanceof Polygon) { assert(second instanceof Polygon); return equals((Polygon<P>)first, (Polygon<P>)second); } return pointSeqEq.equals(first.getPositions(), second.getPositions()); }