From e392f0014f9b7b9bd12d318667eba95eb8ac6259 Mon Sep 17 00:00:00 2001 From: asl Date: Thu, 15 Oct 2015 09:51:11 +0300 Subject: [PATCH] code revision --- check_copyright.py | 1 + src/HYDROData/HYDROData_Document.cxx | 2 +- src/HYDROData/HYDROData_IInterpolator.cxx | 6 +- .../HYDROData_IProfilesInterpolator.cxx | 2 +- src/HYDROData/HYDROData_ImmersibleZone.cxx | 2 - src/HYDROData/HYDROData_Iterator.cxx | 2 +- src/HYDROData/HYDROData_Lambert93.cxx | 172 +----------------- .../HYDROData_LinearInterpolator.cxx | 2 +- src/HYDROData/HYDROData_NaturalObject.cxx | 2 - 9 files changed, 9 insertions(+), 182 deletions(-) diff --git a/check_copyright.py b/check_copyright.py index 2f4e3cc2..b306ea21 100644 --- a/check_copyright.py +++ b/check_copyright.py @@ -34,3 +34,4 @@ def check_folder( theFolder ): check_folder( 'src/HYDROData' ) check_folder( 'src/HYDROGUI' ) check_folder( 'src/HYDROPy' ) +check_folder( 'src/HYDRO_tests' ) diff --git a/src/HYDROData/HYDROData_Document.cxx b/src/HYDROData/HYDROData_Document.cxx index 55912ca6..0cf4c403 100644 --- a/src/HYDROData/HYDROData_Document.cxx +++ b/src/HYDROData/HYDROData_Document.cxx @@ -866,4 +866,4 @@ NCollection_Sequence HYDROData_Document::GetInterpolato } return aNames; -} \ No newline at end of file +} diff --git a/src/HYDROData/HYDROData_IInterpolator.cxx b/src/HYDROData/HYDROData_IInterpolator.cxx index 9bb77827..80e11a20 100644 --- a/src/HYDROData/HYDROData_IInterpolator.cxx +++ b/src/HYDROData/HYDROData_IInterpolator.cxx @@ -28,8 +28,7 @@ HYDROData_IInterpolator::~HYDROData_IInterpolator() { } -void HYDROData_IInterpolator::SetAltitudeObject( - const Handle(HYDROData_IAltitudeObject)& theAltitude ) +void HYDROData_IInterpolator::SetAltitudeObject( const Handle(HYDROData_IAltitudeObject)& theAltitude ) { myAltitudeObject = theAltitude; } @@ -39,8 +38,7 @@ Handle(HYDROData_IAltitudeObject) HYDROData_IInterpolator::GetAltitudeObject() c return myAltitudeObject; } -double HYDROData_IInterpolator::GetAltitudeForPoint( - const double theCoordX, const double theCoordY ) const +double HYDROData_IInterpolator::GetAltitudeForPoint( const double theCoordX, const double theCoordY ) const { return myAltitudeObject.IsNull() ? HYDROData_IAltitudeObject::GetInvalidAltitude() : myAltitudeObject->GetAltitudeForPoint( gp_XY( theCoordX, theCoordY ) ); diff --git a/src/HYDROData/HYDROData_IProfilesInterpolator.cxx b/src/HYDROData/HYDROData_IProfilesInterpolator.cxx index 93fc87af..05cb3729 100644 --- a/src/HYDROData/HYDROData_IProfilesInterpolator.cxx +++ b/src/HYDROData/HYDROData_IProfilesInterpolator.cxx @@ -191,4 +191,4 @@ NCollection_Sequence HYDROData_IProfilesInterpolator::GetPoints( const s } return aProfilePoints; -} \ No newline at end of file +} diff --git a/src/HYDROData/HYDROData_ImmersibleZone.cxx b/src/HYDROData/HYDROData_ImmersibleZone.cxx index aaed2418..3e54c045 100644 --- a/src/HYDROData/HYDROData_ImmersibleZone.cxx +++ b/src/HYDROData/HYDROData_ImmersibleZone.cxx @@ -264,5 +264,3 @@ void HYDROData_ImmersibleZone::RemovePolyline() ClearReferenceObjects( DataTag_Polyline ); SetToUpdate( true ); } - - diff --git a/src/HYDROData/HYDROData_Iterator.cxx b/src/HYDROData/HYDROData_Iterator.cxx index 21097504..c835f51f 100644 --- a/src/HYDROData/HYDROData_Iterator.cxx +++ b/src/HYDROData/HYDROData_Iterator.cxx @@ -154,7 +154,7 @@ Handle(HYDROData_Entity) HYDROData_Iterator::Object( const TDF_Label& theLabel ) case KIND_OBSTACLE_ALTITUDE: aResult = new HYDROData_ObstacleAltitude(); break; case KIND_STRICKLER_TABLE: aResult = new HYDROData_StricklerTable(); break; case KIND_LAND_COVER: aResult = new HYDROData_LandCover(); break; - case KIND_LAND_COVER_MAP: aResult = new HYDROData_LandCoverMap(); break; + case KIND_LAND_COVER_MAP: aResult = new HYDROData_LandCoverMap(); break; default: break; } diff --git a/src/HYDROData/HYDROData_Lambert93.cxx b/src/HYDROData/HYDROData_Lambert93.cxx index 8a5d64fe..c7cc478f 100755 --- a/src/HYDROData/HYDROData_Lambert93.cxx +++ b/src/HYDROData/HYDROData_Lambert93.cxx @@ -17,335 +17,167 @@ // #include - #include - - // Standard values - const double PI = 3.14159265; - - // Base values of the Lambert-93 - const double a = 6378137; // m -- le demi-grand axe - const double f = 1.0 / 298.257222101; // l'aplatissement - - - const double phi_1_deg = 44; // deg -- le premier parallèle d'échelle - const double phi_2_deg = 49; // deg -- le deuxième parallèle d'échell - - - const double lambda_0_deg = 3; // deg -- la longitude d'origine donnée par le méridien central de Greenwich - const double phi_0_deg = 46.5; // deg -- la latitude d'origine - - - const double X_0 = 700000; // m -- la coordonnée à l'origine - const double Y_0 = 6600000; // m -- la coordonnée à l'origine - - // Derived values of the Lambert-93 - const double b = a * ( 1 - f ); // m -- le demi-petit axe - const double e = sqrt( a*a - b*b ) / a; // l'excentricité - - const double phi_0 = HYDROData_Lambert93::toRad( phi_0_deg ); - const double phi_1 = HYDROData_Lambert93::toRad( phi_1_deg ); - const double phi_2 = HYDROData_Lambert93::toRad( phi_2_deg ); - const double lambda_0 = HYDROData_Lambert93::toRad( lambda_0_deg ); - - - - double cot( double x ) - { - return cos( x ) / sin( x ); - } - - double ln( double x ) - { - return log( x ); - } - - const double s1 = sin( phi_1 ); - const double s2 = sin( phi_2 ); - const double c1 = cos( phi_1 ); - const double c2 = cos( phi_2 ); - - const double n1 = ln( c2/c1 ) + 1.0/2.0 * ln( (1-e*e*s1*s1)/(1-e*e*s2*s2) ); - const double n2 = tan( phi_1 / 2 + PI/4 ) * pow( 1-e*s1, e/2 ) * pow( 1+e*s2, e/2 ); - const double n3 = tan( phi_2 / 2 + PI/4 ) * pow( 1+e*s1, e/2 ) * pow( 1-e*s2, e/2 ); - const double n = n1 / ( ln( n2/n3 ) ); - - const double p1 = a * c1 / ( n * sqrt( 1-e*e*s1*s1 ) ); - const double p2 = tan( phi_1 / 2 + PI / 4 ); - const double p3 = pow( (1-e*s1)/(1+e*s1), e/2 ); - const double p_0 = p1 * pow( p2*p3, n ); - - double HYDROData_Lambert93::toRad( double theDeg ) - { - return theDeg * PI / 180.0; - } - - double HYDROData_Lambert93::toDeg( double theRad ) - { - return theRad / PI * 180.0; - } - - double HYDROData_Lambert93::calc_rho( double phi ) - { - double c1 = cot( phi/2 + PI/4 ); - double c2 = ( 1 + e * sin( phi ) ) / ( 1 - e * sin( phi ) ); - double rho = p_0 * pow( c1 * pow( c2, e/2 ), n ); - return rho; - } - - void HYDROData_Lambert93::toXY( double theLatitudeDeg, double theLongitudeDeg, - double& theX, double& theY ) - { - double phi = toRad( theLatitudeDeg ); - double lambda = toRad( theLongitudeDeg ); - - double rho = calc_rho( phi ); - double rho_0 = calc_rho( phi_0 ); - double theta = n * ( lambda - lambda_0 ); - - theX = X_0 + rho * sin( theta ); - theY = Y_0 + rho_0 - rho * cos( theta ); - } - - double arctan( double x ) - { - return atan( x ); - } - - typedef double (*FUNC)( double ); double solve( FUNC f, double c, double x1, double x2, double eps ) - { - double f1 = f( x1 ) - c; - double f2 = f( x2 ) - c; - while( fabs( x1 - x2 ) > eps ) - { - double x = ( x1 + x2 ) / 2; - double fx = f( x ) - c; - bool b1 = f1>=0; - bool b2 = f2>=0; - bool b = fx>=0; - if( b==b1 ) - { - x1 = x; - f1 = fx; - } - else - { - x2 = x; - f2 = fx; - } - } - return ( x1 + x2 ) / 2; - } - - double F( double phi ) - { - double f1 = tan( phi/2 + PI/4 ); - double f2 = ( 1 - e*sin(phi) ) / ( 1 + e*sin(phi) ); - return f1 * pow( f2, e/2 ); - } - - double Finv( double x, double eps ) - { - return solve( F, x, 0, PI/2-eps, eps ); - } - - double HYDROData_Lambert93::calc_phi_inv( double rho, double eps ) - { - double x = pow( p_0 / rho, 1/n ); - double phi = Finv( x, eps ); - return phi; - } - - double HYDROData_Lambert93::calc_phi_ign( double rho, double eps ) - { - double x = p_0 / rho; - double y = pow( x, 1/n ); - double phi_i_1, phi_i = 2*arctan( y ) - PI/2; - while( true ) - { - phi_i_1 = phi_i; - double z = y * pow( ( 1 + e*sin(phi_i_1) ) / ( 1 - e*sin(phi_i_1) ), e/2 ); - phi_i = 2*arctan( pow( x, 1/n ) * z ) - PI/2; - if( fabs( phi_i - phi_i_1 ) < eps ) - return phi_i; - } - return -1; - } - - void HYDROData_Lambert93::toGeo( double theX, double theY, - - double& theLatitudeDeg, double& theLongitudeDeg, - - double theEps ) - + double& theLatitudeDeg, double& theLongitudeDeg, + double theEps ) { - double rho_0 = calc_rho( phi_0 ); - double rho = sqrt( pow( theX - X_0, 2 ) + pow( Y_0 - theY + rho_0, 2 ) ); - double theta = 2 * arctan( ( theX - X_0 ) / ( Y_0 - theY + rho_0 + rho ) ); - - double lambda = theta / n + lambda_0; - double phi = calc_phi_inv( rho, theEps ); - - theLatitudeDeg = toDeg( phi ); - theLongitudeDeg = toDeg( lambda ); - } void HYDROData_Lambert93::DMSToDeg( int theDeg, diff --git a/src/HYDROData/HYDROData_LinearInterpolator.cxx b/src/HYDROData/HYDROData_LinearInterpolator.cxx index 8a383ced..aea863d1 100644 --- a/src/HYDROData/HYDROData_LinearInterpolator.cxx +++ b/src/HYDROData/HYDROData_LinearInterpolator.cxx @@ -104,4 +104,4 @@ void HYDROData_LinearInterpolator::Calculate() } SetErrorCode( aStatus ); -} \ No newline at end of file +} diff --git a/src/HYDROData/HYDROData_NaturalObject.cxx b/src/HYDROData/HYDROData_NaturalObject.cxx index fb7e9314..a9cac71d 100644 --- a/src/HYDROData/HYDROData_NaturalObject.cxx +++ b/src/HYDROData/HYDROData_NaturalObject.cxx @@ -29,5 +29,3 @@ HYDROData_NaturalObject::HYDROData_NaturalObject() HYDROData_NaturalObject::~HYDROData_NaturalObject() { } - - -- 2.39.2