X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_ShapeFile.h;h=ec7b0ff3602caf610bfc6fbb30c7f696ec31e864;hb=7f56fcbfed23a9fd09b7ab87edd7ec742e2725e6;hp=11517a6647d937b6106706dad2aae02b2a3c28f7;hpb=aaf4ecf52eae47da4da3cfa523672526787018f8;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_ShapeFile.h b/src/HYDROData/HYDROData_ShapeFile.h index 11517a66..ec7b0ff3 100644 --- a/src/HYDROData/HYDROData_ShapeFile.h +++ b/src/HYDROData/HYDROData_ShapeFile.h @@ -1,8 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// +// Copyright (C) 2014-2015 EDF-R&D // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either @@ -35,15 +31,18 @@ class gp_XYZ; class Handle_HYDROData_PolylineXY; class Handle_HYDROData_Polyline3D; -class Handle_HYDROData_LandCover; class Handle(HYDROData_Document); class TopTools_SequenceOfShape; class TopoDS_Face; +class TopoDS_Shape; class Handle_HYDROData_Entity; +class Handle_HYDROData_LandCoverMap; class HYDROData_ShapeFile { +public: + enum ShapeType { ShapeType_Polyline, @@ -59,14 +58,19 @@ enum DBF_FieldType DBF_FieldType_Invalid }; + struct DBF_AttrValue { DBF_AttrValue() { + myIntVal = -1; + myDoubleVal = -1.0; myIsNull = true; myFieldType = DBF_FieldType_None; } QString myStrVal; + int myIntVal; + double myDoubleVal; std::string myRawValue; DBF_FieldType myFieldType; bool myIsNull; @@ -80,39 +84,57 @@ public: HYDRODATA_EXPORT void Export(const QString& aFileName, NCollection_Sequence aPolyXYSeq, NCollection_Sequence aPoly3DSeq, - NCollection_Sequence aLCSeq, QStringList& aNonExpList); + + HYDRODATA_EXPORT void Export(const QString& aFileName, + const Handle_HYDROData_LandCoverMap& aLCM, + QStringList& aNonExpList); + int WriteObjectPolyXY(SHPHandle theShpHandle, Handle_HYDROData_PolylineXY thePoly ); + int WriteObjectPoly3D(SHPHandle theShpHandle, Handle_HYDROData_Polyline3D thePoly ); - int WriteObjectLC(SHPHandle theShpHandle, Handle_HYDROData_LandCover theLC ); + + int WriteObjectPolygon(SHPHandle theShpHandle, const TopoDS_Shape& theInputShape ); //Import bool Parse(SHPHandle theHandle, ShapeType theType, int& theShapeTypeOfFile); //Import Landcover void ReadSHPPolygon(SHPObject* anObj, int i, TopoDS_Face& F); - HYDRODATA_EXPORT int ImportLandCovers(const QString theFileName, QStringList& thePolygonsList, TopTools_SequenceOfShape& theFaces, int& theShapeTypeOfFile); + + HYDRODATA_EXPORT int ImportPolygons(const QString theFileName, + QStringList& thePolygonsList, + TopTools_SequenceOfShape& theFaces, + int& theShapeTypeOfFile); + HYDRODATA_EXPORT void Free(); + //Import Polyline void ReadSHPPolyXY(Handle(HYDROData_Document) theDocument, SHPObject* anObj, QString theFileName, - int theInd, NCollection_Sequence& theEntities); + int theInd, NCollection_Sequence& theEntities); + void ReadSHPPoly3D(Handle(HYDROData_Document) theDocument, SHPObject* anObj, QString theFileName, - int theInd, NCollection_Sequence& theEntities); + int theInd, NCollection_Sequence& theEntities); + HYDRODATA_EXPORT int ImportPolylines(Handle(HYDROData_Document) theDocument, const QString& theFileName, - NCollection_Sequence& theEntities, int& theShapeTypeOfFile); + NCollection_Sequence& theEntities, int& theShapeTypeOfFile); + HYDRODATA_EXPORT QString GetShapeTypeName(int theType); //DBF I/O Methods - bool CheckDBFFileExisting(const QString& theSHPFilePath, QString& thePathToDBFFile); - bool DBF_OpenDBF(const QString& thePathToDBFFile); - int DBF_GetNbFields(); - QStringList DBF_GetFieldList(); - void DBF_GetFieldTypeList(std::vector& FTVect); - int DBF_GetNbRecords(); - void DBF_CloseDBF(); - void DBF_GetAttributeList(int theIndexOfField, std::vector& theAttrV); + HYDRODATA_EXPORT bool CheckDBFFileExisting(const QString& theSHPFilePath, QString& thePathToDBFFile); + HYDRODATA_EXPORT bool DBF_OpenDBF(const QString& thePathToDBFFile); + HYDRODATA_EXPORT int DBF_GetNbFields(); + HYDRODATA_EXPORT QStringList DBF_GetFieldList(); + HYDRODATA_EXPORT void DBF_GetFieldTypeList(std::vector& FTVect); + HYDRODATA_EXPORT int DBF_GetNbRecords(); + HYDRODATA_EXPORT void DBF_CloseDBF(); + HYDRODATA_EXPORT void DBF_GetAttributeList(int theIndexOfField, std::vector& theAttrV); + HYDRODATA_EXPORT bool DBF_WriteFieldAndValues(const QString& theFileName, const QString& theFieldName, DBF_FieldType theType, const std::vector& theAttrV, bool bUseStrValue); private: void ProcessFace(TopoDS_Face theFace, SHPHandle theShpHandle); + int TryOpenShapeFile(QString theFileName); + private: std::vector mySHPObjects; SHPHandle myHSHP;