Salome HOME
Merge branch 'BR_LAND_COVER_MAP' of ssh://git.salome-platform.org/modules/hydro into...
[modules/hydro.git] / src / HYDROData / HYDROData_LandCoverMap.cxx
index 951f77d398cabb6c7426dc71c598d5124e8d215e..114fdf86994cb4bd5c73dec9175732b9e93f7ea0 100644 (file)
 #include <BRepCheck_Shell.hxx>
 #include <BRepCheck_ListOfStatus.hxx>
 #include <TopTools_SequenceOfShape.hxx>
+#include <Handle_Geom_Curve.hxx>
+#include <Handle_Geom_Line.hxx>
+#include <Handle_Geom_TrimmedCurve.hxx>
+#include <Geom_TrimmedCurve.hxx>
 
 
 #include <QFile>
@@ -573,7 +577,9 @@ bool HYDROData_LandCoverMap::Split( const Handle( HYDROData_PolylineXY )& thePol
 */
 bool HYDROData_LandCoverMap::Split( const TopoDS_Shape& theShape )
 {
-  return LocalPartition( theShape, "" );
+  int aNbCL = GetLCCount();
+  bool aResult = LocalPartition( theShape, "" );
+  return aResult && aNbCL != GetLCCount();
 }
 
 
@@ -828,6 +834,10 @@ bool HYDROData_LandCoverMap::LocalPartition( const TopoDS_Shape& theNewShape, co
     QString aSType = anIt.StricklerType();
     //std::cout << "from " << anIt.Face() << ": " << anIt.StricklerType() << std::endl;
     TopTools_ListOfShape aModified = aBuilder.Modified( anIt.Face() );
+
+    //
+    TopTools_ListOfShape aGen = aBuilder.Generated( anIt.Face() );
+    //
     if( aModified.Extent() == 0 )
       aModified.Append( anIt.Face() );
 
@@ -939,7 +949,7 @@ QStringList HYDROData_LandCoverMap::DumpToPython( const QString&       thePyScri
   QString aDbfFileName = thePyScriptPath;
   aDbfFileName.replace( ".py", ".dbf" );
 
-  ExportSHP( aShpFileName );
+  ExportSHP( aShpFileName, true, 0.1 );
 
   QString anAttr = "CODE_06"; //TODO: some custom choice
   QStringList anAttrValues, aTypes;
@@ -1048,14 +1058,39 @@ bool HYDROData_LandCoverMap::ImportSHP( const QString& theSHPFileName,
   return true;
 }
 
-bool HYDROData_LandCoverMap::ExportSHP( const QString& theSHPFileName) const
+bool HYDROData_LandCoverMap::ExportSHP( const QString& theSHPFileName, bool bUseDiscr, double theDefl) const
 {
   HYDROData_ShapeFile anExporter;
   QStringList aList;
-  anExporter.Export(theSHPFileName, this, aList);
+  anExporter.Export(theSHPFileName, this, aList, bUseDiscr, theDefl );
   if (aList.empty())
     return true;
   else 
     return false;
 }
 
+bool HYDROData_LandCoverMap::CheckLinear()
+{
+  TopoDS_Shape InpShape = GetShape();
+  TopExp_Explorer anEdgeEx(InpShape, TopAbs_EDGE);
+  for (; anEdgeEx.More(); anEdgeEx.Next()) 
+  {
+    TopoDS_Edge E = TopoDS::Edge(anEdgeEx.Current());
+    double aFP, aLP;
+    Handle_Geom_Curve aCur = BRep_Tool::Curve(E, aFP, aLP);
+    Handle(Geom_Line) aLine = Handle(Geom_Line)::DownCast(aCur);
+    if (aLine.IsNull())
+    {
+      Handle(Geom_TrimmedCurve) aTC = Handle(Geom_TrimmedCurve)::DownCast(aCur);
+      if (!aTC.IsNull())
+      {
+        Handle(Geom_Line) aLine = Handle(Geom_Line)::DownCast(aTC->BasisCurve());
+        if (aLine.IsNull())
+          return false;
+      }
+      else
+        return false;
+    }
+  }
+  return true;
+}