+double HYDROData_CalculationCase::GetStricklerCoefficientForPoint( const gp_XY& thePoint ) const
+{
+ double aCoeff = 0;
+ Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab );
+ if ( !aDocument.IsNull() )
+ aCoeff = aDocument->GetDefaultStricklerCoefficient();
+
+ Handle(HYDROData_LandCover) aLandCover;
+ Handle(HYDROData_Zone) aZone = GetZoneFromPoint( thePoint, Standard_True );
+ if ( !aZone.IsNull() )
+ {
+ HYDROData_SequenceOfObjects anObjList = aZone->GetObjects();
+ if ( anObjList.Length() == 1 )
+ aLandCover = Handle(HYDROData_LandCover)::DownCast( anObjList.First() );
+ else
+ aLandCover = Handle(HYDROData_LandCover)::DownCast( aZone->GetMergeObject() );
+ }
+
+ if ( !aLandCover.IsNull() )
+ {
+ QString aType = aLandCover->GetStricklerType();
+ Handle(HYDROData_StricklerTable) aTable = GetStricklerTable();
+ if ( !aTable.IsNull() )
+ {
+ if ( aTable->GetTypes().contains( aType ) )
+ aCoeff = aTable->Get( aType, aCoeff );
+ }
+ }
+
+ return aCoeff;
+}
+