X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_LandCoverMap.h;h=e009351a2baa6e20176ca49c3baa0b7218103401;hb=d398a8be8e0b0259b476b358d53d234ce4c82379;hp=f479c42818f15c369b1bc8879cb4080a0a5f65bb;hpb=3e865a760f79a9b3085e653fc7ea09e2d1b6f570;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_LandCoverMap.h b/src/HYDROData/HYDROData_LandCoverMap.h index f479c428..e009351a 100644 --- a/src/HYDROData/HYDROData_LandCoverMap.h +++ b/src/HYDROData/HYDROData_LandCoverMap.h @@ -20,13 +20,28 @@ #define HYDROData_LANDCOVER_MAP_HeaderFile #include +#include +#include +#include +#include +#include +#include +#include + +class Handle_HYDROData_StricklerTable; +#include + +typedef NCollection_IndexedDataMap HYDROData_MapOfFaceToStricklerType; DEFINE_STANDARD_HANDLE( HYDROData_LandCoverMap, HYDROData_Entity ) -class TopoDS_Face; -class TopoDS_Shell; -class Handle( HYDROData_Polyline ); +class TopoDS_Shape; +class TopoDS_Wire; +class TopoDS_Iterator; +class TopTools_ListOfShape; +class Handle( HYDROData_PolylineXY ); class Handle( HYDROData_Object ); +class gp_XY; class HYDROData_LandCoverMap : public HYDROData_Entity { @@ -38,36 +53,127 @@ protected: DataTag_First = HYDROData_Entity::DataTag_First + 100, ///< first tag, to reserve DataTag_Shape, ///< the shape presentation of the land cover map DataTag_Types, + DataTag_Transparency, + }; + +public: + class Explorer + { + public: + Explorer( const HYDROData_LandCoverMap& ); + HYDRODATA_EXPORT Explorer( const Handle( HYDROData_LandCoverMap )& ); + HYDRODATA_EXPORT ~Explorer(); + + void Init( const HYDROData_LandCoverMap& ); + HYDRODATA_EXPORT bool More() const; + HYDRODATA_EXPORT void Next(); + + int Index() const; + HYDRODATA_EXPORT TopoDS_Face Face() const; + HYDRODATA_EXPORT QString StricklerType() const; + void SetStricklerType( const QString& ); + + private: + TopExp_Explorer* myExplorer; + int myIndex; + Handle(TDataStd_ExtStringArray) myArray; }; - HYDROData_LandCoverMap(); - ~HYDROData_LandCoverMap(); + enum DBFStatus + { + DBFStatus_OK, + DBFStatus_DIFF_SIZE_ERROR, + DBFStatus_OPEN_FILE_ERROR, + DBFStatus_NO_SUCH_FIELD_ERROR, + DBFStatus_NO_DBFVALUES_CORRESPONDENCE_WARNING + }; + + HYDRODATA_EXPORT HYDROData_LandCoverMap(); + HYDRODATA_EXPORT virtual ~HYDROData_LandCoverMap(); + + HYDRODATA_EXPORT virtual const ObjectKind GetKind() const; + + HYDRODATA_EXPORT bool ImportSHP( const QString& theSHPFileName, + const QList& theIndices = QList() ); + + HYDRODATA_EXPORT bool ExportSHP( const QString& theSHPFileName, bool bUseDiscr = false, double theDefl = 0.1) const; + + HYDRODATA_EXPORT DBFStatus ImportDBF( const QString& theDBFFileName, + const QString& theFieldName, + const QStringList& DBFValues, + const QStringList& StricklerTypes, + const QList& theIndices = QList() ); + + HYDRODATA_EXPORT void ExportDBF( const QString& theDBFFileName, + const QString& theFieldName, + const QStringList& theDBFValues, + const QStringList& theStricklerTypes ) const; + + HYDRODATA_EXPORT bool ExportTelemac( const QString& theFileName, + double theDeflection, + const Handle_HYDROData_StricklerTable& theTable ) const; + + HYDRODATA_EXPORT bool Add( const Handle( HYDROData_Object )&, const QString& theType ); + HYDRODATA_EXPORT bool Add( const Handle( HYDROData_PolylineXY )&, const QString& theType ); - int GetNbFaces() const; - TopoDS_Face GetFace( int theIndex ) const; + HYDRODATA_EXPORT bool Remove( const TopoDS_Face& ); + HYDRODATA_EXPORT bool Remove( const TopTools_ListOfShape& ); - QString GetStricklerType( int theIndex ) const; - void SetStricklerType( int theIndex, const QString& theType ); + HYDRODATA_EXPORT bool Split( const Handle( HYDROData_PolylineXY )& ); + HYDRODATA_EXPORT bool Split( const TopoDS_Shape& ); + HYDRODATA_EXPORT bool Merge( const TopTools_ListOfShape&, const QString& theType ); - bool ImportQGIS( const QString& theFileName ); - bool ExportQGIS( const QString& theFileName ) const; - bool ExportTelemac( const QString& theFileName ) const; + HYDRODATA_EXPORT bool ChangeType( const TopTools_ListOfShape&, const QString& theType ); - bool Add( const Handle( HYDROData_Object )&, const QString& theType ); - bool Add( const Handle( HYDROData_Polyline )&, const QString& theType ); + HYDRODATA_EXPORT TopoDS_Face FindByPoint( const gp_Pnt2d&, QString& theType ) const; - bool Remove( int theIndex ); + HYDRODATA_EXPORT TopoDS_Shape GetShape() const; - bool Split( const Handle( HYDROData_Polyline )& ); - bool Merge( const QList&, const QString& theType ); + HYDRODATA_EXPORT QString StricklerType( const TopoDS_Face& ) const; + + HYDRODATA_EXPORT virtual QStringList DumpToPython( const QString& thePyScriptPath, + MapOfTreatedObjects& theTreatedObjects ) const; + + HYDRODATA_EXPORT int GetLCCount() const; + HYDRODATA_EXPORT bool IsEmpty() const; + + HYDRODATA_EXPORT void StoreLandCovers( const HYDROData_MapOfFaceToStricklerType& ); + + HYDRODATA_EXPORT virtual bool IsHas2dPrs() const; + + HYDRODATA_EXPORT void SetTransparency( double ); + HYDRODATA_EXPORT double GetTransparency() const; + + HYDRODATA_EXPORT void RemoveInternal(TopoDS_Shape& ShToRebuild, NCollection_IndexedDataMap* aF2FReplace); + + HYDRODATA_EXPORT bool CheckLinear(); + + HYDRODATA_EXPORT virtual void UpdateLocalCS( double theDx, double theDy ); + + HYDRODATA_EXPORT void ClassifyPoints( const std::vector& thePoints, std::vector >& theTypes ) const; + + HYDRODATA_EXPORT void ClassifyPoints( const std::vector& thePoints, + Handle(HYDROData_StricklerTable) theTable, + std::vector& theCoeffs, double DefValue, bool UseMax ) const; protected: - TopoDS_Shell GetShape() const; - void SetShape( const TopoDS_Shell& ); - bool Add( const TopoDS_Face&, const QString& theType ); + void SetShape( const TopoDS_Shape& ); + + bool Add( const TopoDS_Wire&, const QString& ); + + bool LocalPartition( const TopoDS_Shape&, const QString& theNewType ); + + static TopoDS_Shape MergeFaces(const TopTools_ListOfShape& theFaces, + bool IsToUnify, + TopTools_IndexedDataMapOfShapeListOfShape* theShHistory = NULL, + double theTolerance = 1E-5 ); public: DEFINE_STANDARD_RTTI( HYDROData_LandCoverMap ); + +private: + friend class Explorer; + friend class test_HYDROData_LandCoverMap; }; #endif