@Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Position)) return false; Position position = (Position) o; if (!Arrays.equals(coords, position.toArray(null))) return false; return true; }
@Override public <P extends Position> boolean equals2D(P first, P second) { if (first == second) return true; //Also if first and second are null? // Or should null arguments trigger IllegalArgumentException return !(first == null || second == null) && internalEquals(first.toArray(null), 2, second.toArray(null), 2); }
@Override public void visit(P position) { position.toArray(coordinates); xMin = Math.min(xMin, coordinates[0]); xMax = Math.max(xMax, coordinates[0]); yMin = Math.min(yMin, coordinates[1]); yMax = Math.max(yMax, coordinates[1]); }
@Override public void visit(P position) { double ar[] = position.toArray(buffer); this.env.expandToInclude(ar[0], ar[1]); }
@Override public PositionSequenceBuilder<P> add(P pos) { pos.toArray(coords); for (double coord : coords) { addCoordinate(coord); } numAdded++; return this; }
public void visit(Q position) { position.toArray( coords ); builder.add( coords ); } };
/** * {@inheritDoc} */ @Override public <P extends Position> boolean equals(P first, P second) { if (first == second) return true; //Also if first and second are null? // Or should null arguments trigger IllegalArgumentException if ((first == null || second == null)) return false; if (first.isEmpty() && second.isEmpty()) return true; if (first.isEmpty() || second.isEmpty()) return false; return equals(first.toArray(null), second.toArray(null)); }
private void addPoints(LineString<?> ring, CountingPositionSequenceBuilder<?> coordinates) { double[] c = new double[coordinates.getCoordinateDimension()]; for ( Position p : ring.getPositions() ) { coordinates.add( p.toArray(c) ); } }
private Double[] pointToOrdinates(MultiPoint<?> multiPoint, int i) { Double[] pointOrdinates = new Double[multiPoint.getCoordinateDimension()]; int idx = 0; for (Double d : multiPoint.getGeometryN(i).getPosition().toArray(null)) { pointOrdinates[idx++] = d; } return pointOrdinates; }
@Override protected void encode(Geometry<?> geom, int parentShapeIndex, CountingPositionSequenceBuilder<?> coordinates, List<Figure> figures, List<Shape> shapes) { if ( !( geom instanceof LineString ) ) { throw new IllegalArgumentException( "Require LineString geometry" ); } if ( geom.isEmpty() ) { shapes.add( new Shape( parentShapeIndex, -1, OpenGisType.LINESTRING ) ); return; } int figureOffset = figures.size(); int pointOffset = coordinates.getNumAdded(); double[] c = new double[coordinates.getCoordinateDimension()]; for ( Position pos : geom.getPositions() ) { coordinates.add( pos.toArray(c) ); } figures.add( new Figure( FigureAttribute.Stroke, pointOffset ) ); shapes.add( new Shape( parentShapeIndex, figureOffset, OpenGisType.LINESTRING ) ); }
@Override protected void encode(Geometry<?> geom, int parentIdx, CountingPositionSequenceBuilder<?> coordinates, List <Figure> figures, List<Shape> shapes) { if (!(geom instanceof Point)) { throw new IllegalArgumentException("Require Point geometry"); } if (geom.isEmpty()) { shapes.add(new Shape(parentIdx, -1, OpenGisType.POINT)); return; } int pntOffset = coordinates.getNumAdded(); int figureOffset = figures.size(); double[] c = new double[coordinates.getCoordinateDimension()]; coordinates.add(geom.getPositionN(0).toArray(c)); Figure figure = new Figure(FigureAttribute.Stroke, pntOffset); figures.add(figure); Shape shape = new Shape(parentIdx, figureOffset, OpenGisType.POINT); shapes.add(shape); }
static <P extends Position> PositionSequence<P> toSeq(CoordinateReferenceSystem<P> crs, P[] positions) { PositionSequenceBuilder<P> builder = PositionSequenceBuilders.fixedSized(positions.length, crs.getPositionClass()); double[] coords = new double[crs.getCoordinateDimension()]; for (P t : positions) { P pos = Positions.mkPosition(crs, t.toArray(coords)); builder.add(pos); } return builder.toPositionSequence(); }