/** * Export the ellipsoid to it's appropriate deegree-crs-definitions form. * * @param ellipsoid * to be exported * @param xmlWriter * to export the ellipsoid to. * @throws XMLStreamException */ protected void export( IEllipsoid ellipsoid, XMLStreamWriter xmlWriter ) throws XMLStreamException { if ( ellipsoid != null ) { xmlWriter.writeStartElement( CRSNS, "ellipsoid" ); // write the elements that are specific to Identifiable exportIdentifiable( ellipsoid, xmlWriter ); double sMajorAxis = ellipsoid.getSemiMajorAxis(); xmlWriter.writeStartElement( CRSNS, "semiMajorAxis" ); xmlWriter.writeCharacters( Double.toString( sMajorAxis ) ); xmlWriter.writeEndElement(); double inverseF = ellipsoid.getInverseFlattening(); xmlWriter.writeStartElement( CRSNS, "inverseFlattening" ); xmlWriter.writeCharacters( Double.toString( inverseF ) ); xmlWriter.writeEndElement(); export( ellipsoid.getUnits(), xmlWriter ); xmlWriter.writeEndElement(); } }
public double getSemiMinorAxis() { return getReferencedObject().getSemiMinorAxis(); }
public double getEccentricity() { return getReferencedObject().getEccentricity(); }
d.setDefaultDescription( datumRemark, true ); if ( ellipsId != -1 && eId == ellipsId ) { LOG.debug( "The ellipsoid (" + ellips.getCode() + ") of the datum (" + d.getCodeAndName() + ") is the same as the ellipsoid in the epsg database (" + eId double a = ellips.getSemiMajorAxis(); double f = ellips.getInverseFlattening(); double b = ellips.getSemiMinorAxis(); double ea = rs.getDouble( count++ ); double ef = rs.getDouble( count++ ); + d.getCodeAndName() + " did not have an epsg code, but the values match, updating ellipsoid epsg code as well." ); ellips.setDefaultId( new EPSGCode( eId ), true ); ellips.setDefaultName( ellpsName, true ); ellips.setDefaultVersion( eVersion, true ); ellips.setDefaultDescription( ellpsRemark, true ); d.setDefaultId( new EPSGCode( newId ), true ); d.setDefaultName( datumName, true ); d.setDefaultDescription( datumRemark, true ); } else { LOG.warn( "The ellipsoid (" + ellips.getCode() + ") of the datum (" + d.getCodeAndName() + ") is not an epsg ellipsoid." );
private void calcParams() { if ( getSourceCRS().getType() == CRSType.COMPOUND ) { this.hasHeight = true; defaultHeightValue = ( (ICompoundCRS) getSourceCRS() ).getDefaultHeight(); } else if ( getTargetCRS().getType() == CRSType.COMPOUND ) { this.hasHeight = true; defaultHeightValue = ( (ICompoundCRS) getTargetCRS() ).getDefaultHeight(); } else { this.hasHeight = false; defaultHeightValue = 0; } IEllipsoid ellipsoid = getSourceCRS().getGeodeticDatum().getEllipsoid(); semiMajorAxis = Unit.METRE.convert( ellipsoid.getSemiMajorAxis(), ellipsoid.getUnits() ); semiMinorAxis = Unit.METRE.convert( ellipsoid.getSemiMinorAxis(), ellipsoid.getUnits() ); squaredSemiMajorAxis = semiMajorAxis * semiMajorAxis; squaredSemiMinorAxis = semiMinorAxis * semiMinorAxis; squaredEccentricity = ellipsoid.getSquaredEccentricity(); // e2 = ( a2 - b2 ) / a2; ep2 = ( squaredSemiMajorAxis - squaredSemiMinorAxis ) / squaredSemiMinorAxis; }
/** * @param sourceCRS * @param targetCRS * @param id * @param gsf * the loaded gridshift file */ public NTv2Transformation( ICRS sourceCRS, ICRS targetCRS, CRSResource id, GridShiftFile gsf ) { this( sourceCRS, targetCRS, id ); this.gsf = gsf; String fromEllips = gsf.getFromEllipsoid(); String toEllips = gsf.getToEllipsoid(); IEllipsoid sourceEl = sourceCRS.getGeodeticDatum().getEllipsoid(); IEllipsoid targetEl = targetCRS.getGeodeticDatum().getEllipsoid(); // rb: patched the gridshift file for access to the axis if ( Math.abs( sourceEl.getSemiMajorAxis() - gsf.getFromSemiMajor() ) > 0.001 || Math.abs( sourceEl.getSemiMinorAxis() - gsf.getFromSemiMinor() ) > 0.001 ) { LOG.warn( "The given source CRS' ellipsoid (" + sourceEl.getCode().getOriginal() + ") does not match the 'from' ellipsoid (" + fromEllips + ")defined in the gridfile: " + gridURL ); } if ( Math.abs( targetEl.getSemiMajorAxis() - gsf.getToSemiMajor() ) > 0.001 || Math.abs( targetEl.getSemiMinorAxis() - gsf.getToSemiMinor() ) > 0.001 ) { LOG.warn( "The given target CRS' ellipsoid (" + targetEl.getCode().getOriginal() + ") does not match the 'to' ellipsoid (" + toEllips + ") defined in the gridfile: " + gridURL ); } isIdentity = ( Math.abs( gsf.getFromSemiMajor() - gsf.getToSemiMajor() ) < 0.001 ) && ( Math.abs( gsf.getFromSemiMinor() - gsf.getToSemiMinor() ) < 0.001 ); }
public double getSemiMajorAxis() { return getReferencedObject().getSemiMajorAxis(); }
xmlWriter.writeCharacters( datum.getEllipsoid().getCode().getOriginal().toLowerCase() ); xmlWriter.writeEndElement();
public double getInverseFlattening() { return getReferencedObject().getInverseFlattening(); }
public IUnit getUnits() { return getReferencedObject().getUnits(); }
public double getSquaredEccentricity() { return getReferencedObject().getSquaredEccentricity(); }
public boolean isSphere() { return getReferencedObject().isSphere(); }
public double getFlattening() { return getReferencedObject().getFlattening(); }
if ( Math.abs( sourceEl.getSemiMajorAxis() - gsf.getFromSemiMajor() ) > 0.001 || Math.abs( sourceEl.getSemiMinorAxis() - gsf.getFromSemiMinor() ) > 0.001 ) { LOG.warn( "The given source CRS' ellipsoid (" + sourceEl.getCode().getOriginal() + ") does not match the 'from' ellipsoid (" + fromEllips + ")defined in the gridfile: " + gridURL ); if ( Math.abs( targetEl.getSemiMajorAxis() - gsf.getToSemiMajor() ) > 0.001 || Math.abs( targetEl.getSemiMinorAxis() - gsf.getToSemiMinor() ) > 0.001 ) { LOG.warn( "The given target CRS' ellipsoid (" + targetEl.getCode().getOriginal() + ") does not match the 'to' ellipsoid (" + toEllips + ") defined in the gridfile: " + gridURL );
/** * @return the semiMajorAxis (a) of the ellipsoid of the datum. */ public final double getSemiMajorAxis( IGeographicCRS geographicCRS ) { return geographicCRS.getGeodeticDatum().getEllipsoid().getSemiMajorAxis(); }
xmlWriter.writeCharacters( datum.getEllipsoid().getCode().toString() ); xmlWriter.writeEndElement();
/** * @return the eccentricity of the ellipsoid of the datum. */ public final double getSquaredEccentricity( IGeographicCRS geographicCRS ) { return geographicCRS.getGeodeticDatum().getEllipsoid().getSquaredEccentricity(); }
final IGeocentricCRS sourceGCS = ( sourceDatum.getEllipsoid().isSphere() && isIdentity( sourceH ) ) ? GeocentricCRS.WGS84 : new GeocentricCRS( sourceDatum, name ); name = targetCRS.getName() + "_Geocentric"; final IGeocentricCRS targetGCS = ( targetDatum.getEllipsoid().isSphere() && isIdentity( targetH ) ) ? GeocentricCRS.WGS84 : new GeocentricCRS( targetDatum,
/** * Export the ellipsoid to it's appropriate deegree-crs-definitions form. * * @param ellipsoid * to be exported * @param xmlWriter * to export the ellipsoid to. * @throws XMLStreamException */ @Override protected void export( IEllipsoid ellipsoid, XMLStreamWriter xmlWriter ) throws XMLStreamException { if ( ellipsoid != null ) { xmlWriter.writeStartElement( CRSNS, "Ellipsoid" ); // write the elements that are specific to Identifiable exportIdentifiable( ellipsoid, xmlWriter ); export( ellipsoid.getUnits(), xmlWriter ); double sMajorAxis = ellipsoid.getSemiMajorAxis(); xmlWriter.writeStartElement( CRSNS, "SemiMajorAxis" ); xmlWriter.writeCharacters( Double.toString( sMajorAxis ) ); xmlWriter.writeEndElement(); double inverseF = ellipsoid.getInverseFlattening(); xmlWriter.writeStartElement( CRSNS, "InverseFlattening" ); xmlWriter.writeCharacters( Double.toString( inverseF ) ); xmlWriter.writeEndElement(); xmlWriter.writeEndElement(); } }
/** * @return the semiMinorAxis (a) of the ellipsoid of the datum. */ public final double getSemiMinorAxis( IGeographicCRS geographicCRS ) { return geographicCRS.getGeodeticDatum().getEllipsoid().getSemiMinorAxis(); }