@Override public boolean equals( Geometry geometry ) { if ( !( geometry instanceof Point ) ) { return false; } double[] coordinates = ( (Point) geometry ).getAsArray(); if ( coordinates.length != this.coordinates.length ) { return false; } for ( int i = 0; i < coordinates.length; i++ ) { if ( !( coordinates[i] == this.coordinates[i] ) ) { return false; } } return true; }
@Override public int getCoordinateDimension() { return min.getCoordinateDimension(); }
@Override protected com.vividsolutions.jts.geom.Polygon buildJTSGeometry() { Points points = new PackedPoints( crs, new double[] { min.get0(), min.get1(), max.get0(), min.get1(), max.get0(), max.get1(), min.get0(), max.get1(), min.get0(), min.get1() }, 2 ); LinearRing shell = jtsFactory.createLinearRing( ( points ) ); return jtsFactory.createPolygon( shell, null ); }
private static Points move( Points points, double offx, double offy ) { List<Point> movedPoints = new ArrayList<Point>( points.size() ); GeometryFactory fac = new GeometryFactory(); for ( Point point : points ) { double[] movedCoordinates = new double[] { point.get0() + offx, point.get1() + offy }; movedPoints.add( fac.createPoint( point.getId(), movedCoordinates, point.getCoordinateSystem() ) ); } return new PointsList( movedPoints ); }
/** * @param bbox * the bbox to set */ public final void setBbox( Envelope bbox ) { if ( bbox == null ) { throw new NullPointerException( "Bbox may not be null" ); } this.bbox = bbox; Point p = bbox.getCentroid(); double[] min = bbox.getMin().getAsArray(); double[] max = bbox.getMax().getAsArray(); position = new float[] { (float) p.get0(), (float) p.get1(), (float) ( ( p.getCoordinateDimension() == 3 ) ? p.get2() : 0 ) }; if ( bbox.getMin().getCoordinateDimension() == 2 ) { min = new double[] { min[0], min[1], 0 }; } if ( bbox.getMax().getCoordinateDimension() == 2 ) { max = new double[] { max[0], max[1], 0 }; } this.error = (float) Vectors3d.length( Vectors3d.sub( max, min ) ); this.height = (float) bbox.getSpan1(); this.groundLevel = (float) min[2]; }
Point max = env.getMax(); ICRS crs = env.getCoordinateSystem(); if ( min.equals( max ) ) { return fac.createPoint( null, min.getAsArray(), crs ); if ( min.get0() == max.get0() || min.get1() == max.get1() ) { Points points = new PointsArray( min, max ); return fac.createLineString( null, crs, points ); double[] points = new double[] { min.get0(), min.get1(), max.get0(), min.get1(), max.get0(), max.get1(), min.get0(), max.get1(), min.get0(), min.get1() }; Curve ls = fac.createLineString( null, crs, new PackedPoints( null, points, 2 ) ); Ring exteriorRing = fac.createRing( null, crs, Collections.singletonList( ls ) );
/** * transforms the submitted point to the target coordinate reference system * * @throws TransformationException */ private Point transform( Point geo, Transformation trans ) throws TransformationException { Point3d coord = new Point3d( geo.get0(), geo.get1(), geo.get2() ); Point3d result = new Point3d( coord ); result = trans.doTransform( coord ); if ( Double.isNaN( geo.get2() ) ) { return geomFactory.createPoint( geo.getId(), new double[] { result.x, result.y }, getTargetCRS() ); } else if ( trans.getSourceCRS().getDimension() == 2 && trans.getTargetCRS().getDimension() == 2 ) { // pass the 3rd coordinate if exist and dimension of source and target CRS is 2 result.z = geo.get2(); } return geomFactory.createPoint( geo.getId(), new double[] { result.x, result.y, result.z }, getTargetCRS() ); }
Point p0Shifted = new DefaultPoint( null, p0.getCoordinateSystem(), p0.getPrecision(), new double[] { p0.get0() - minOrd0, p0.get1() - minOrd1 } ); Point p1Shifted = new DefaultPoint( null, p1.getCoordinateSystem(), p1.getPrecision(), new double[] { p1.get0() - minOrd0, p1.get1() - minOrd1 } ); Point p2Shifted = new DefaultPoint( null, p2.getCoordinateSystem(), p2.getPrecision(), new double[] { p2.get0() - minOrd0, p2.get1() - minOrd1 } ); Vector3d a = new Vector3d( p0Shifted.get0(), p0Shifted.get1(), p0Shifted.get2() ); Vector3d b = new Vector3d( p1Shifted.get0(), p1Shifted.get1(), p1Shifted.get2() ); Vector3d c = new Vector3d( p2Shifted.get0(), p2Shifted.get1(), p2Shifted.get2() ); circle.y += minOrd1; return geomFac.createPoint( null, new double[] { circle.x, circle.y }, p0Shifted.getCoordinateSystem() );
private void exportAsPos( Point point ) throws XMLStreamException, UnknownCRSException, TransformationException { writer.writeStartElement( gmlNs, "pos" ); double[] ordinates = getTransformedCoordinate( point.getCoordinateSystem(), point.getAsArray() ); writer.writeCharacters( formatter.format( ordinates[0] ) ); for ( int i = 1; i < ordinates.length; i++ ) { writer.writeCharacters( " " + formatter.format( ordinates[i] ) ); } writer.writeEndElement(); }
/** * @param dts * @param sceneEnvelope * @param toLocalCRS * @param adapter * @return */ private Envelope handleColormapDataset( ColormapDatasetConfig dts, Envelope sceneEnvelope, double[] toLocalCRS ) { float[] maxColor = parseColor( dts.getMaxColor(), MAX_DEFAULT ); float[] minColor = parseColor( dts.getMinColor(), MIN_DEFAULT ); float[] heightColor = parseColor( dts.getHeightISOColor(), HEIGHT_DEFAULT ); double zMax = dts.getMaxZValue() == null ? sceneEnvelope.getMax().get2() : dts.getMaxZValue(); double zMin = dts.getMinZValue() == null ? sceneEnvelope.getMin().get2() : dts.getMinZValue(); Colormap result = new Colormap( (float) zMin, (float) zMax, minColor, maxColor, heightColor ); if ( LOG.isDebugEnabled() ) { LOG.debug( "Configured colormap: " + dts.getTitle() + " | " + result.toString() ); } double[] min = Arrays.copyOf( sceneEnvelope.getMin().getAsArray(), 3 ); double[] max = Arrays.copyOf( sceneEnvelope.getMax().getAsArray(), 3 ); min[0] += toLocalCRS[0]; min[1] += toLocalCRS[1]; max[0] += toLocalCRS[0]; max[1] += toLocalCRS[1]; super.addConstraint( dts.getTitle(), result, geomFac.createEnvelope( min, max, sceneEnvelope.getCoordinateSystem() ) ); return sceneEnvelope; }
if ( !p.getStartPoint().equals( p.getEndPoint() ) ) { LOG.warn( "Found ring that is not closed. Repairing it." ); double[] coords = new double[( p.size() + 1 ) * p.getDimension()]; int i = 0; for ( Point pt : p ) { for ( int dim = 0; dim < pt.getCoordinateDimension(); dim++ ) { coords[i++] = pt.get( dim ); coords[i++] = p.get( 0 ).get( dim );
@Override public double get2() { return getReferencedObject().get2(); } }
double[] min = bbox.getMin().getAsArray(); double[] max = bbox.getMax().getAsArray(); position = new float[] { (float) p.get0(), (float) p.get1(), (float) ( ( p.getCoordinateDimension() == 3 ) ? p.get2() : 0 ) }; if ( bbox.getMin().getCoordinateDimension() == 2 ) { min = new double[] { min[0], min[1], 0 }; if ( bbox.getMax().getCoordinateDimension() == 2 ) { max = new double[] { max[0], max[1], 0 };
/** * transforms the list of points * * @throws TransformationException */ private Points transform( Points points, Transformation trans ) throws TransformationException { List<Point> result = new ArrayList<Point>( points.size() ); for ( Point point : points ) { Point3d coord = new Point3d( point.get0(), point.get1(), point.get2() ); Point3d tmp = new Point3d( coord ); tmp = trans.doTransform( coord ); if ( Double.isNaN( point.get2() ) ) { result.add( geomFactory.createPoint( point.getId(), new double[] { tmp.x, tmp.y }, getTargetCRS() ) ); } else { // pass the 3rd coordinate if exist and dimension of source and target CRS is 2 if ( trans.getSourceCRS().getDimension() == 2 && trans.getTargetCRS().getDimension() == 2 ) { tmp.z = point.get2(); } result.add( geomFactory.createPoint( point.getId(), new double[] { tmp.x, tmp.y, tmp.z }, getTargetCRS() ) ); } } return new PointsList( result ); }
private void exportCoord( Point point ) throws XMLStreamException, TransformationException, UnknownCRSException { double[] ords = getTransformedCoordinate( point.getCoordinateSystem(), point.getAsArray() ); writer.writeStartElement( "gml", "coord", GML21NS ); writer.writeStartElement( "gml", "X", GML21NS ); writer.writeCharacters( formatter.format( ords[0] ) ); writer.writeEndElement(); if ( ords.length > 1 ) { writer.writeStartElement( "gml", "Y", GML21NS ); writer.writeCharacters( formatter.format( ords[1] ) ); writer.writeEndElement(); if ( ords.length > 2 ) { writer.writeStartElement( "gml", "Z", GML21NS ); writer.writeCharacters( formatter.format( ords[2] ) ); writer.writeEndElement(); } } writer.writeEndElement(); // </gml:coord> }
double[] min = datasetEnvelope.getMin().getAsArray(); double[] max = datasetEnvelope.getMax().getAsArray(); double[] tMin = Arrays.copyOf( min, 3 ); double[] tMax = Arrays.copyOf( max, 3 ); tMin[2] = sceneEnvelope.getMin().get2(); tMax[2] = sceneEnvelope.getMax().get2(); datasetEnvelope = geomFac.createEnvelope( tMin, tMax, datasetEnvelope.getCoordinateSystem() ); double[] min = constraintEnv.getMin().getAsArray(); double[] max = constraintEnv.getMax().getAsArray(); double[] tMin = Arrays.copyOf( min, min.length ); double[] tMax = Arrays.copyOf( max, max.length );