/** * @param semiMajorAxis * @param eccentricity * @param units * @param id * containing all id relevant data. */ public Ellipsoid( double semiMajorAxis, double eccentricity, IUnit units, CRSResource id ) { super( id ); this.units = units; this.semiMajorAxis = semiMajorAxis; this.eccentricity = eccentricity; this.squaredEccentricity = this.eccentricity * this.eccentricity; this.flattening = calcFlattening( eccentricity ); if ( Math.abs( flattening ) > 0.00001 ) { this.inverseFlattening = 1d / flattening; } else { this.inverseFlattening = 0; } this.semiMinorAxis = this.semiMajorAxis - ( flattening * this.semiMajorAxis ); }
/** * @param units * @param semiMajorAxis * @param semiMinorAxis * @param id * containing the relevant information */ public Ellipsoid( IUnit units, double semiMajorAxis, double semiMinorAxis, CRSResource id ) { super( id ); this.units = units; this.semiMajorAxis = semiMajorAxis; this.semiMinorAxis = semiMinorAxis; flattening = ( semiMajorAxis - semiMinorAxis ) / semiMajorAxis; if ( Math.abs( flattening ) > 0.00001 ) { inverseFlattening = 1. / flattening; } else { inverseFlattening = 0; } this.squaredEccentricity = calcSquaredEccentricity( flattening ); this.eccentricity = Math.sqrt( squaredEccentricity ); }
result = new Ellipsoid( semiMajorAxis, Math.sqrt( eccentricitySquared ), Unit.METRE, CRSCodeType.valueOf( id ), name, version, description, areaOfUse ); } else if ( !Double.isNaN( eccentricity ) ) { result = new Ellipsoid( semiMajorAxis, eccentricity, Unit.METRE, CRSCodeType.valueOf( id ), name, version, description, areaOfUse ); } else if ( !Double.isNaN( inverseFlattening ) ) { result = new Ellipsoid( semiMajorAxis, Unit.METRE, inverseFlattening, CRSCodeType.valueOf( id ), name, version, description, areaOfUse ); } else if ( !Double.isNaN( semiMinorAxis ) ) { result = new Ellipsoid( Unit.METRE, semiMajorAxis, semiMinorAxis, CRSCodeType.valueOf( id ), name, version, description, areaOfUse ); } else { LOG.debug( "Only a semimajor defined, assuming a sphere (instead of an ellipsoid) is to be created." ); result = new Ellipsoid( Unit.METRE, semiMajorAxis, semiMajorAxis, CRSCodeType.valueOf( id ), name, version, description, areaOfUse );
/** * Tries to find a cached ellipsoid, if not found, the config will be checked. * * @param ellipsoidID * @return an ellipsoid or <code>null</code> if no ellipsoid with given id was found, or the id was * <code>null</code> or empty. * @throws CRSConfigurationException * if something went wrong. */ public Ellipsoid getEllipsoidForId( String ellipsoidID ) throws CRSConfigurationException { if ( ellipsoidID == null || "".equals( ellipsoidID.trim() ) ) { return null; } Ellipsoid result = getStore().getCachedIdentifiable( Ellipsoid.class, ellipsoidID ); if ( result == null ) { try { result = parseEllipsoid( getConfigReader() ); while ( result != null && !result.hasId( ellipsoidID, false, true ) ) { result = parseEllipsoid( getConfigReader() ); } } catch ( XMLStreamException e ) { throw new CRSConfigurationException( e ); } } return result; }
result = new Ellipsoid( semiMajor, units, inverseFlattening, id.getCodes(), id.getNames(), id.getVersions(), id.getDescriptions(), id.getAreasOfUse() ); } else if ( !Double.isNaN( eccentricity ) ) { result = new Ellipsoid( semiMajor, eccentricity, units, id.getCodes(), id.getNames(), id.getVersions(), id.getDescriptions(), id.getAreasOfUse() ); } else { result = new Ellipsoid( units, semiMajor, semiMinorAxis, id.getCodes(), id.getNames(), id.getVersions(), id.getDescriptions(), id.getAreasOfUse() );
/** * @param semiMajorAxis * @param units * @param inverseFlattening * @param id * containing all id relevant data. */ public Ellipsoid( double semiMajorAxis, IUnit units, double inverseFlattening, CRSResource id ) { super( id ); this.units = units; this.semiMajorAxis = semiMajorAxis; this.inverseFlattening = inverseFlattening; if ( Math.abs( this.inverseFlattening ) > 0.00001 ) { flattening = 1. / this.inverseFlattening; } else { flattening = 0; } this.squaredEccentricity = calcSquaredEccentricity( this.flattening ); eccentricity = Math.sqrt( squaredEccentricity ); this.semiMinorAxis = this.semiMajorAxis - ( flattening * this.semiMajorAxis ); }
code = new CRSCodeType( name ); return new Ellipsoid( semiMajorAxis, Unit.METRE, inverseFlattening, new CRSIdentifiable( new CRSCodeType[] { code }, new String[] { name }, null, null, null ) );