From 357d12c8701339e897cb70b3711671e8c31daf19 Mon Sep 17 00:00:00 2001 From: Paul RASCLE Date: Fri, 20 May 2016 18:34:43 +0200 Subject: [PATCH] HYDRO_tests corrections --- src/HYDROData/HYDROData_LandCoverMap.cxx | 53 ++++- .../resources/def_strickler_table.txt | 88 +++---- .../LandCoverMap_PrsByCoeff.png | Bin 11290 -> 20766 bytes src/HYDRO_tests/reference_data/st_dump.py | 218 ++++++++++++++---- .../test_HYDROData_LandCoverMap.cxx | 32 ++- .../test_HYDROData_StricklerTable.cxx | 34 +-- 6 files changed, 297 insertions(+), 128 deletions(-) diff --git a/src/HYDROData/HYDROData_LandCoverMap.cxx b/src/HYDROData/HYDROData_LandCoverMap.cxx index a8325aef..9f8986e2 100644 --- a/src/HYDROData/HYDROData_LandCoverMap.cxx +++ b/src/HYDROData/HYDROData_LandCoverMap.cxx @@ -645,6 +645,7 @@ TopoDS_Shape HYDROData_LandCoverMap::MergeFaces( const TopTools_ListOfShape& the TopTools_IndexedDataMapOfShapeListOfShape* theShHistory, double theTolerance) { + //DEBTRACE("MergeFaces"); int anError; TopTools_ListIteratorOfListOfShape anIt; BOPCol_ListOfShape aLC; @@ -829,16 +830,14 @@ bool HYDROData_LandCoverMap::LocalPartition( const TopoDS_Shape& theNewShape, co aShapesList.Append( anIt.Face() ); aShapesList.Append( theNewShape ); - DEBTRACE("theNewType " << theNewType); + //DEBTRACE("theNewType " << theNewType); if( aShapesList.Size()==1 && theNewShape.ShapeType()==TopAbs_FACE ) { - DEBTRACE("---"); aNewFaces.Add( TopoDS::Face( theNewShape ), theNewType ); StoreLandCovers( aNewFaces ); return true; } - DEBTRACE("---"); // prepare pave filler aPaveFiller.SetArguments( aShapesList ); aPaveFiller.Perform(); @@ -846,7 +845,6 @@ bool HYDROData_LandCoverMap::LocalPartition( const TopoDS_Shape& theNewShape, co if( anError ) return false; - DEBTRACE("---"); // add faces to builder BOPAlgo_Builder aBuilder; anIt.Init( *this ); @@ -870,7 +868,7 @@ bool HYDROData_LandCoverMap::LocalPartition( const TopoDS_Shape& theNewShape, co for( ; aMIt.More(); aMIt.Next() ) { //std::cout << " " << aMIt.Value() << std::endl; - DEBTRACE(aMIt.Value()); + //DEBTRACE(aMIt.Value()); int aKey = (int)(uintptr_t)aMIt.Value().TShape().operator->(); aShapesFromNewFace.Add( aKey ); } @@ -880,12 +878,13 @@ bool HYDROData_LandCoverMap::LocalPartition( const TopoDS_Shape& theNewShape, co for( ; anIt.More(); anIt.Next() ) { QString aSType = anIt.StricklerType(); - DEBTRACE(anIt.StricklerType()); + //DEBTRACE(anIt.StricklerType() << " " << anIt.Face()); //std::cout << "from " << anIt.Face() << ": " << anIt.StricklerType() << std::endl; TopTools_ListOfShape aModified = aBuilder.Modified( anIt.Face() ); // if( aModified.Extent() == 0 ) aModified.Append( anIt.Face() ); + //DEBTRACE(anIt.StricklerType() << " " << anIt.Face()); TopTools_ListIteratorOfListOfShape aMIt( aModified ); for( ; aMIt.More(); aMIt.Next() ) @@ -898,14 +897,20 @@ bool HYDROData_LandCoverMap::LocalPartition( const TopoDS_Shape& theNewShape, co if( isFace && !isAlsoFromNew ) aNewFaces.Add( TopoDS::Face( aShape ), aSType ); } + //DEBTRACE(anIt.StricklerType() << " " << anIt.Face()); } - DEBTRACE("---"); // c. add the new shape if it is face with its type if( theNewShape.ShapeType()==TopAbs_FACE ) aNewFaces.Add( TopoDS::Face( theNewShape ), theNewType ); // convert map of shape to type to compound and list of types StoreLandCovers( aNewFaces ); + +// anIt.Init( *this ); +// for( ; anIt.More(); anIt.Next() ) +// { +// DEBTRACE(anIt.StricklerType() << " " << anIt.Face()); +// } return true; } @@ -917,6 +922,7 @@ void HYDROData_LandCoverMap::StoreLandCovers( const HYDROData_MapOfFaceToStrickl { TopTools_ListOfShape aListOfFaces; + //DEBTRACE("theMap.Extent() " << theMap.Extent()); for( int i = 1; i <= theMap.Extent(); i++ ) { TopoDS_Face aFace = theMap.FindKey(i); @@ -950,16 +956,24 @@ void HYDROData_LandCoverMap::StoreLandCovers( const HYDROData_MapOfFaceToStrickl for( int i = 1; i <= theMap.Extent(); i++ ) { TopoDS_Face aFF = theMap.FindKey(i); + //DEBTRACE(" --- " << aFF); if( aFF.IsNull() ) continue; TopTools_ListOfShape aLS = ShHistory.FindFromKey(aFF); if (aLS.IsEmpty()) { QString aSType = theMap.FindFromKey(aFF); + //DEBTRACE(" --- " << aSType.toStdString()); if (ShF2FHistory.Contains(aFF)) - aChF2ST.Add(ShF2FHistory.FindFromKey(aFF), aSType); + { + //DEBTRACE("ShF2FHistory.FindFromKey(aFF) " << ShF2FHistory.FindFromKey(aFF)); + aChF2ST.Add(ShF2FHistory.FindFromKey(aFF), aSType); + } else - aChF2ST.Add(aFF, aSType); + { + //DEBTRACE("aFF " << aFF); + aChF2ST.Add(aFF, aSType); + } } else { @@ -967,11 +981,19 @@ void HYDROData_LandCoverMap::StoreLandCovers( const HYDROData_MapOfFaceToStrickl for (; anIt.More(); anIt.Next()) { QString aSType = theMap.FindFromKey(aFF); + //DEBTRACE(" --- " << aSType.toStdString()); const TopoDS_Face& aMF = TopoDS::Face(anIt.Value()); - if (ShF2FHistory.Contains(aFF)) - aChF2ST.Add(ShF2FHistory.FindFromKey(aFF), aSType); + //if (ShF2FHistory.Contains(aFF)) + if (ShF2FHistory.Contains(aMF)) + { + aChF2ST.Add(ShF2FHistory.FindFromKey(aMF), aSType); + //DEBTRACE("ShF2FHistory.FindFromKey(aMF) " << ShF2FHistory.FindFromKey(aFF)); + } else - aChF2ST.Add(aFF, aSType); + { + aChF2ST.Add(aMF, aSType); + //DEBTRACE("aMF " << aMF); + } } } } @@ -986,6 +1008,7 @@ void HYDROData_LandCoverMap::StoreLandCovers( const HYDROData_MapOfFaceToStrickl QString aST = ""; if (aChF2ST.Contains(aFace)) aST = aChF2ST.FindFromKey(aFace); + //DEBTRACE("aFace " << aFace << " aST " << aST.toStdString()); aSTypes << aST; } @@ -993,6 +1016,7 @@ void HYDROData_LandCoverMap::StoreLandCovers( const HYDROData_MapOfFaceToStrickl int k = 0; foreach (QString aST, aSTypes) { + //DEBTRACE("aST " << aST.toStdString()); aTypes->SetValue( k, HYDROData_Tool::toExtString( aST ) ); k++; } @@ -1070,6 +1094,7 @@ QStringList HYDROData_LandCoverMap::DumpToPython( const QString& thePyScri void HYDROData_LandCoverMap::RemoveInternal(TopoDS_Shape& ShToRebuild, NCollection_IndexedDataMap* aF2FReplace) { + //DEBTRACE("RemoveInternal"); //Shape must be topologically correct TopExp_Explorer anExpF(ShToRebuild, TopAbs_FACE); // @@ -1112,6 +1137,10 @@ void HYDROData_LandCoverMap::RemoveInternal(TopoDS_Shape& ShToRebuild, NCollecti anExtReshape->Replace(aFK, aFV); ShToRebuild = anExtReshape->Apply(ShToRebuild); } +// for (int i = 1; i <= aF2FReplace->Extent(); i++) +// { +// DEBTRACE("aF2FReplace key,value " << aF2FReplace->FindKey(i) << " " << aF2FReplace->FindFromIndex(i)); +// } } diff --git a/src/HYDROGUI/resources/def_strickler_table.txt b/src/HYDROGUI/resources/def_strickler_table.txt index 20117d09..95c85e9f 100644 --- a/src/HYDROGUI/resources/def_strickler_table.txt +++ b/src/HYDROGUI/resources/def_strickler_table.txt @@ -1,45 +1,45 @@ CODE_06 -"Tissu urbain continu" 1.000 E6004D 111 -"Tissu urbain discontinu" 1.000 FF0000 112 -"Zones industrielles ou commerciales et installations publiques" 1.000 CC4DF2 121 -"Réseaux routier et ferroviaire et espaces associés" 1.000 CC0000 122 -"Zones portuaires" 1.000 E6CCCC 123 -"Aéroports" 1.000 E6CCE6 124 -"Extraction de matériaux" 1.000 A600CC 131 -"Décharges" 1.000 A64D00 132 -"Chantiers" 1.000 FF4DFF 133 -"Espaces verts urbains" 1.000 FFA6FF 141 -"Equipements sportifs et de loisirs" 1.000 FFE6FF 142 -"Terres arables hors périmètres d'irrigation" 1.000 FFFFA8 211 -"Périmètres irrigués en permanence" 1.000 FFFF00 212 -"Rizières" 1.000 E6E600 213 -"Vignobles" 1.000 E68000 221 -"Vergers et petits fruits" 1.000 F2A64D 222 -"Oliveraies" 1.000 E6A600 223 -"Prairies et autres surfaces toujours en herbe à usage agricole" 1.000 E6E64D 231 -"Cultures annuelles associées à des cultures permanentes" 1.000 FFE6A6 241 -"Systèmes culturaux et parcellaires complexes" 1.000 FFE64D 242 -"Surfaces essentiellement agricoles, interrompues par des espaces naturels importants" 1.000 E6CC4D 243 -"Territoires agroforestiers" 1.000 F2CCA6 244 -"Forêts de feuillus" 1.000 80FF00 311 -"Forêts de conifères" 1.000 A600 312 -"Forêts mélangées" 1.000 4DFF00 313 -"Pelouses et pâturages naturels" 1.000 CCF24D 321 -"Landes et broussailles" 1.000 A6FF80 322 -"Végétation sclérophylle" 1.000 A6E64D 323 -"Forêt et végétation arbustive en mutation" 1.000 A6F200 324 -"Plages, dunes et sable" 1.000 E6E6E6 331 -"Roches nues" 1.000 CCCCCC 332 -"Végétation clairsemée" 1.000 CCFFCC 333 -"Zones incendiées" 1.000 0 334 -"Glaciers et neiges éternelles" 1.000 A6E6CC 335 -"Marais intérieurs" 1.000 A6A6FF 411 -"Tourbières" 1.000 4D4DFF 412 -"Marais maritimes" 1.000 CCCCFF 421 -"Marais salants" 1.000 E6E6FF 422 -"Zones intertidales" 1.000 A6A6E6 423 -"Cours et voies d'eau" 1.000 CCF2 511 -"Plans d'eau" 1.000 80F2E6 512 -"Lagunes littorales" 1.000 FFA6 521 -"Estuaires" 1.000 A6FFE6 522 -"Mers et océans" 1.000 E6F2FF 523 +"Tissu urbain continu" 1.0111 E6004D 111 +"Tissu urbain discontinu" 1.0112 FF0000 112 +"Zones industrielles ou commerciales et installations publiques" 1.0121 CC4DF2 121 +"Réseaux routier et ferroviaire et espaces associés" 1.0122 CC0000 122 +"Zones portuaires" 1.0123 E6CCCC 123 +"Aéroports" 1.0124 E6CCE6 124 +"Extraction de matériaux" 1.0131 A600CC 131 +"Décharges" 1.0132 A64D00 132 +"Chantiers" 1.0133 FF4DFF 133 +"Espaces verts urbains" 1.0141 FFA6FF 141 +"Equipements sportifs et de loisirs" 1.0142 FFE6FF 142 +"Terres arables hors périmètres d'irrigation" 1.0211 FFFFA8 211 +"Périmètres irrigués en permanence" 1.0212 FFFF00 212 +"Rizières" 1.0213 E6E600 213 +"Vignobles" 1.0221 E68000 221 +"Vergers et petits fruits" 1.0222 F2A64D 222 +"Oliveraies" 1.0223 E6A600 223 +"Prairies et autres surfaces toujours en herbe à usage agricole" 1.0231 E6E64D 231 +"Cultures annuelles associées à des cultures permanentes" 1.0241 FFE6A6 241 +"Systèmes culturaux et parcellaires complexes" 1.0242 FFE64D 242 +"Surfaces essentiellement agricoles, interrompues par des espaces naturels importants" 1.0243 E6CC4D 243 +"Territoires agroforestiers" 1.0244 F2CCA6 244 +"Forêts de feuillus" 1.0311 80FF00 311 +"Forêts de conifères" 1.0312 A600 312 +"Forêts mélangées" 1.0313 4DFF00 313 +"Pelouses et pâturages naturels" 1.0321 CCF24D 321 +"Landes et broussailles" 1.0322 A6FF80 322 +"Végétation sclérophylle" 1.0323 A6E64D 323 +"Forêt et végétation arbustive en mutation" 1.0324 A6F200 324 +"Plages, dunes et sable" 1.0331 E6E6E6 331 +"Roches nues" 1.0332 CCCCCC 332 +"Végétation clairsemée" 1.0333 CCFFCC 333 +"Zones incendiées" 1.0334 0 334 +"Glaciers et neiges éternelles" 1.0335 A6E6CC 335 +"Marais intérieurs" 1.0411 A6A6FF 411 +"Tourbières" 1.0412 4D4DFF 412 +"Marais maritimes" 1.0421 CCCCFF 421 +"Marais salants" 1.0422 E6E6FF 422 +"Zones intertidales" 1.0423 A6A6E6 423 +"Cours et voies d'eau" 1.0511 CCF2 511 +"Plans d'eau" 1.0512 80F2E6 512 +"Lagunes littorales" 1.0521 FFA6 521 +"Estuaires" 1.0522 A6FFE6 522 +"Mers et océans" 1.0523 E6F2FF 523 diff --git a/src/HYDRO_tests/reference_data/LandCoverMap_PrsByCoeff.png b/src/HYDRO_tests/reference_data/LandCoverMap_PrsByCoeff.png index 0731c22fe92ba3e9f10d205db733e74983382dce..951c13f4d3802295cf2546f0d7a96c26bcfaef76 100644 GIT binary patch literal 20766 zcmbSz1y~f}+Vs{{d# zFJot>1GZTz4`^<~Zp+?&`gM!MilPwK4>v_HOdtkqRjE7c^u9!4tmn|KR;6ps=V~e) z?Tz|lTE7;xc0P3-UyaH0gF*f6=qY@@hP6HC<)b(5g&=X;!2er-zh!xZ6nXW@;iBNsxA zu_t2*M|}M^G_5g+1w8{7@?FRxF0qGl9D~q&?=T>~TPSsg$4QY0Vo-TBVlS#eN1U^=K)hlP1?vTP1^;k>H@{6LDI_@ps}d zXu}t#ueMs?jff>aZ0RL0;sudfX&gK9;A7~P{7?5q z5lya&_lPo9hI@FM4jY1(ND)HH{i2y}2TWm*2TBA?+!3cewOjoSF;q967<%%)F>)NU zwj4s1Nxp|zY<1$Rl`UsLEI1T#fqZ8)FgsDQmT(WF_a&3+ej#TnNS!PKA z`7eQc;Sy0>`y^uCLl+!K@<5QsWCCU`giTz?7oM%TQxR7yBL5aIgSLB)ZvSWkcDPcb zVFE;kY=w%&5s{M8XOB#JbP6PpwZ3*NjkA#rA@4ePfVoy){yCl(9f=r@om{Y_DRclj zN5pzo2xRvUTW|=%!_^#sv{gu9HTmEsDi?aw7I~`Xc9>+GBiv-fQies4q+983ZJL%A z;ccFn>cD=sPnzopGQ72sK%BX~ZpJI`;S%xg-Mc=6_V69-@(ALlLcj>AHVeM12w<~4 zd*)2xS*!L#!dN^~ipL9)m+ZIV4MJdYl1%Arm~xE>On+j8@y=q`*+K4n$5E&6QAe#} zs(<`A_b@!oFmL8TXMuCc{6f2J&Dwm1cW2|G{e@TOiZ(VkCO7Xjy}3Ahh1l-v4eyT1 ze$X3Fkk4l!Iu#U+jpue7doGN%{%$t$_H4YzDayLOkXuspYqmyVbI4?KrTKfak#nal zGaRw*6L|{XpB}y*IrpJb(0eV6j)B!0{Q2|3gNzGCM(d{*Cpx{STg=0Z9EPHuLkm|Y3Wk>2xv)y}bcpF5LqY7` zzUw!f$&5R8?8uocUY%I#|N3b4YlP?YCvL&@UN&zvqYrky>91nkersI4dNsVaB0wQk zMFE3Qy-u0r51;}|A`jm_fm2U6uM8cR70~d6v6&BSZcK-HZ8B4?Ao=9rL)j= z*8hcSnAg(S`L-wa6U8=i3btkCrOg2}i00xG8M!vy5gBQk__6#B=n*Tke1 z&(*0HNM(yHsUjGpC&28Ywi306Cjl!&BiNR#FO-+84M<$@XpiyUSZ-GhxtMD##CtBYRNmPaj zZaNzp8m{$}-4S6VeH0Fpof&*^+^gBKnSmBfhmKk`@jb~nZ2md8 z?A5tw>GwBV-_fOwoX6i?E?0cD%w2%i2z;XESVUxY$ z;uCcpeXx-#6B84!reDgn(Ykr_=9`LMmwKDrFoPmD$0q~|i=cdARY#sfP>xOKO4J-r zMAdv)U0vM`5=}q<_Q-l}m)q!vY^&zt$8hMwhSEhhRQ%j53kWmucAblzSnn*0GV9@F zI_|p0fYQ-%bJuAq2T`4Hz^hQ=(+=gn~zOlY4_44J*VEo!$8XE@pK|ijH5+uSW z7IJpzJu8ikJDE;8m1?15Y}|Er_wL<6{o|_(#^2h zL|r!NT4zmZ2cF3ER{sE3SY_XXTz6T4+#~N&9fp3$ZO*+? zIP1PV5Fxmo5~ye5Iq$RBnmpg9q)!BdR((`amyTICiZ%GNw4UPfS9>B-^?@ zr?LK(#^$9DE6hCnja#knZ+3dpF`D5%5E==Qj2LAMYe2<=hY#ya@R{|wMYi3=&f($V z=TK>xzkB!Y*GGHKx>Y&5-numtV%7A<)p*4fozlIaAm*9b*<976A?iWG@wu`^$9QQN z*$sR(MbFkotkb{QCYSB@alXn#SNU_X^6Sf2BaED$WO=MDO@DoV?fd?FVPS&1XatdS z&yVx)^0uoQ$ive~B`b{?0{OlEyaHU5zZDgT4Q$A`W7qTUeJ(8Y;b4yB<636U1geT&qd>P6^h}gqK8adXa5^o|3~t~Rqw~);ku$Lh6Z=1Fo{~@R4#(D=@lAbI3&I6%@Exe zYbJ*KVr4ZnalMNd^G?9gnfra@w!o7;+n&pNx*1f4^2-bk4%+A@)%PkQKIicQwL-r5 z;ClqD+|Qvi!#f{EL^xkKb?U2->naT8*s0CQ<_weHNoSuOQ^~nb?q`>cyIQyUkcfTp z;M%$C-OO@JciZ?Sv8Wzsczxm3z_^G;%-W5);h&(V61+DzoI!b2zkdDN{yE5759n#Z zU=IzSsfWcreF#47QP->S0*RIhch7Bc*U#g%3IwSNI08M0d{AZI^p|!yfv`(ETO0En zhQM0Q#+n3&hEAY+suDD2xBFz#kWg1Em*g5#{KIpY2rUHa?qLQ>Jln#sp4rZgQ~i9`DGUMpMv$SLPWvD&Wy`%B9KiSqp3BT%=?8AhoG85#frS?A3 zbH5Gev*JPMxUl%8Eo?*V^32g%nk8+)ttU+@z`IgH*VaBotv9$54v~HDL2d5 z%&hkVxQdT2rZusiI(4dukF~P0?##$7Hrc6CozdnDg=4NW{a)wWze{z?x(wIGE4}pY z`yBF2(zdJc>S+Z*a`~GEjL7j-lV0;*<>3O9LX(w z_wJU%ty{P9ZJ*VT$hLvV1nuWF@m`;Q6~M~BG6WtoQ-rute(vjWPA;xc8JDS^5^gbr zIr}&b;q4wu*Uz!!VTA&AG{md&i4e|dlegdhM{)hy{_WehYZ4dVUHMgZhe6?n<+GBF z`HWab=OyY1drgc`5UhZzHid8wc5uth9C6e^60=o+sp)~ADQ|*t9gYuhYrUDX#BJh{ z`DyB)^F&8`mrGxWW$&lx zU!~E>$?4(uYXz4#)|LfV+I7#JJ6C4wHTx{FcjWb$vppt%A8eR$5{;~p>`S(+rb|Eq zDtgsUof?s#wT!fP<=S@3sH>~L8tW{`{dn#Dd|Qe4<`&C~hK3#4iyaOcAr-wJ94h>` znlO_-CTqR;1+Tvt?<|PK`TDN$F`M8NB_f4!rxUQ-gbF(4HKT^ir+URW49&HXf)-F=21?HHX}({S68vW`4W6J zK?IRn9tyw%!c=67;yj%s7hIw4$5Rv$3=4G%!@~i#l8je;iziZlK%{6cOe3@5N%$?8 zk72>VEbXWib~$%@%3&{dgKP3!(u`v3JsQGy;+?xyI2v|?%^}i=nmB^O`3o0TU%q

{C|}?sg{A$X62&m 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 literal 11290 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 M(K6J0PO}dFe=Sm91poj5 diff --git a/src/HYDRO_tests/reference_data/st_dump.py b/src/HYDRO_tests/reference_data/st_dump.py index 42127401..c536a04f 100644 --- a/src/HYDRO_tests/reference_data/st_dump.py +++ b/src/HYDRO_tests/reference_data/st_dump.py @@ -1,68 +1,192 @@ -# -*- coding: utf-8 -*- +from HYDROPy import * +from PyQt4.QtCore import * +from PyQt4.QtGui import * -### -### This file is generated automatically by SALOME v7.6.0 with dump python functionality -### +hydro_doc = HYDROData_Document.Document( theStudy._get_StudyId() ) -import sys -import salome +hydro_doc.SetLocalCS( 0.000, 0.000 ) -salome.salome_init() -theStudy = salome.myStudy +ST = hydro_doc.CreateObject( KIND_STRICKLER_TABLE ) +ST.SetName( "ST" ) -import salome_notebook -notebook = salome_notebook.NoteBook(theStudy) -sys.path.insert( 0, r'D:/asl/hydro/studies') +ST.SetAttrName( "CODE_06 " ) -### -### HYDRO component -### +ST.Set( u"Pelouses et pâturages naturels", 1.0321 ) +ST.SetAttrValue( u"Pelouses et pâturages naturels", "321" ) +ST.SetColor( u"Pelouses et pâturages naturels", QColor( 204, 242, 77 ) ) -from HYDROPy import * -from PyQt4.QtCore import * -from PyQt4.QtGui import * +ST.Set( u"Aéroports", 1.0124 ) +ST.SetAttrValue( u"Aéroports", "124" ) +ST.SetColor( u"Aéroports", QColor( 230, 204, 230 ) ) + +ST.Set( u"Systèmes culturaux et parcellaires complexes", 1.0242 ) +ST.SetAttrValue( u"Systèmes culturaux et parcellaires complexes", "242" ) +ST.SetColor( u"Systèmes culturaux et parcellaires complexes", QColor( 255, 230, 77 ) ) + +ST.Set( u"Cultures annuelles associées à des cultures permanentes", 1.0241 ) +ST.SetAttrValue( u"Cultures annuelles associées à des cultures permanentes", "241" ) +ST.SetColor( u"Cultures annuelles associées à des cultures permanentes", QColor( 255, 230, 166 ) ) + +ST.Set( u"Forêt et végétation arbustive en mutation", 1.0324 ) +ST.SetAttrValue( u"Forêt et végétation arbustive en mutation", "324" ) +ST.SetColor( u"Forêt et végétation arbustive en mutation", QColor( 166, 242, 0 ) ) + +ST.Set( u"Décharges", 1.0132 ) +ST.SetAttrValue( u"Décharges", "132" ) +ST.SetColor( u"Décharges", QColor( 166, 77, 0 ) ) + +ST.Set( u"Végétation clairsemée", 1.0333 ) +ST.SetAttrValue( u"Végétation clairsemée", "333" ) +ST.SetColor( u"Végétation clairsemée", QColor( 204, 255, 204 ) ) + +ST.Set( u"Prairies et autres surfaces toujours en herbe à usage agricole", 1.0231 ) +ST.SetAttrValue( u"Prairies et autres surfaces toujours en herbe à usage agricole", "231" ) +ST.SetColor( u"Prairies et autres surfaces toujours en herbe à usage agricole", QColor( 230, 230, 77 ) ) + +ST.Set( u"Périmètres irrigués en permanence", 1.0212 ) +ST.SetAttrValue( u"Périmètres irrigués en permanence", "212" ) +ST.SetColor( u"Périmètres irrigués en permanence", QColor( 255, 255, 0 ) ) + +ST.Set( u"Plans d'eau", 1.0512 ) +ST.SetAttrValue( u"Plans d'eau", "512" ) +ST.SetColor( u"Plans d'eau", QColor( 128, 242, 230 ) ) + +ST.Set( u"Territoires agroforestiers", 1.0244 ) +ST.SetAttrValue( u"Territoires agroforestiers", "244" ) +ST.SetColor( u"Territoires agroforestiers", QColor( 242, 204, 166 ) ) + +ST.Set( u"Forêts mélangées", 1.0313 ) +ST.SetAttrValue( u"Forêts mélangées", "313" ) +ST.SetColor( u"Forêts mélangées", QColor( 77, 255, 0 ) ) + +ST.Set( u"Glaciers et neiges éternelles", 1.0335 ) +ST.SetAttrValue( u"Glaciers et neiges éternelles", "335" ) +ST.SetColor( u"Glaciers et neiges éternelles", QColor( 166, 230, 204 ) ) + +ST.Set( u"Plages, dunes et sable", 1.0331 ) +ST.SetAttrValue( u"Plages, dunes et sable", "331" ) +ST.SetColor( u"Plages, dunes et sable", QColor( 230, 230, 230 ) ) + +ST.Set( u"Zones incendiées", 1.0334 ) +ST.SetAttrValue( u"Zones incendiées", "334" ) +ST.SetColor( u"Zones incendiées", QColor( 0, 0, 0 ) ) + +ST.Set( u"Tissu urbain continu", 1.0111 ) +ST.SetAttrValue( u"Tissu urbain continu", "111" ) +ST.SetColor( u"Tissu urbain continu", QColor( 230, 0, 77 ) ) + +ST.Set( u"Chantiers", 1.0133 ) +ST.SetAttrValue( u"Chantiers", "133" ) +ST.SetColor( u"Chantiers", QColor( 255, 77, 255 ) ) + +ST.Set( u"Estuaires", 1.0522 ) +ST.SetAttrValue( u"Estuaires", "522" ) +ST.SetColor( u"Estuaires", QColor( 166, 255, 230 ) ) + +ST.Set( u"Marais maritimes", 1.0421 ) +ST.SetAttrValue( u"Marais maritimes", "421" ) +ST.SetColor( u"Marais maritimes", QColor( 204, 204, 255 ) ) + +ST.Set( u"Forêts de conifères", 1.0312 ) +ST.SetAttrValue( u"Forêts de conifères", "312" ) +ST.SetColor( u"Forêts de conifères", QColor( 0, 166, 0 ) ) + +ST.Set( u"Surfaces essentiellement agricoles, interrompues par des espaces naturels importants", 1.0243 ) +ST.SetAttrValue( u"Surfaces essentiellement agricoles, interrompues par des espaces naturels importants", "243" ) +ST.SetColor( u"Surfaces essentiellement agricoles, interrompues par des espaces naturels importants", QColor( 230, 204, 77 ) ) + +ST.Set( u"Tourbières", 1.0412 ) +ST.SetAttrValue( u"Tourbières", "412" ) +ST.SetColor( u"Tourbières", QColor( 77, 77, 255 ) ) + +ST.Set( u"Extraction de matériaux", 1.0131 ) +ST.SetAttrValue( u"Extraction de matériaux", "131" ) +ST.SetColor( u"Extraction de matériaux", QColor( 166, 0, 204 ) ) + +ST.Set( u"Réseaux routier et ferroviaire et espaces associés", 1.0122 ) +ST.SetAttrValue( u"Réseaux routier et ferroviaire et espaces associés", "122" ) +ST.SetColor( u"Réseaux routier et ferroviaire et espaces associés", QColor( 204, 0, 0 ) ) + +ST.Set( u"Mers et océans", 1.0523 ) +ST.SetAttrValue( u"Mers et océans", "523" ) +ST.SetColor( u"Mers et océans", QColor( 230, 242, 255 ) ) + +ST.Set( u"Equipements sportifs et de loisirs", 1.0142 ) +ST.SetAttrValue( u"Equipements sportifs et de loisirs", "142" ) +ST.SetColor( u"Equipements sportifs et de loisirs", QColor( 255, 230, 255 ) ) + +ST.Set( u"Forêts de feuillus", 1.0311 ) +ST.SetAttrValue( u"Forêts de feuillus", "311" ) +ST.SetColor( u"Forêts de feuillus", QColor( 128, 255, 0 ) ) + +ST.Set( u"Vergers et petits fruits", 1.0222 ) +ST.SetAttrValue( u"Vergers et petits fruits", "222" ) +ST.SetColor( u"Vergers et petits fruits", QColor( 242, 166, 77 ) ) + +ST.Set( u"Végétation sclérophylle", 1.0323 ) +ST.SetAttrValue( u"Végétation sclérophylle", "323" ) +ST.SetColor( u"Végétation sclérophylle", QColor( 166, 230, 77 ) ) + +ST.Set( u"Landes et broussailles", 1.0322 ) +ST.SetAttrValue( u"Landes et broussailles", "322" ) +ST.SetColor( u"Landes et broussailles", QColor( 166, 255, 128 ) ) + +ST.Set( u"Tissu urbain discontinu", 1.0112 ) +ST.SetAttrValue( u"Tissu urbain discontinu", "112" ) +ST.SetColor( u"Tissu urbain discontinu", QColor( 255, 0, 0 ) ) + +ST.Set( u"Cours et voies d'eau", 1.0511 ) +ST.SetAttrValue( u"Cours et voies d'eau", "511" ) +ST.SetColor( u"Cours et voies d'eau", QColor( 0, 204, 242 ) ) -hydro_doc = HYDROData_Document.Document( theStudy._get_StudyId() ); +ST.Set( u"Oliveraies", 1.0223 ) +ST.SetAttrValue( u"Oliveraies", "223" ) +ST.SetColor( u"Oliveraies", QColor( 230, 166, 0 ) ) -hydro_doc.SetLocalCS( 0, 0 ) +ST.Set( u"Vignobles", 1.0221 ) +ST.SetAttrValue( u"Vignobles", "221" ) +ST.SetColor( u"Vignobles", QColor( 230, 128, 0 ) ) -ST = hydro_doc.CreateObject( KIND_STRICKLER_TABLE ); -ST.SetName( "ST" ); +ST.Set( u"Rizières", 1.0213 ) +ST.SetAttrValue( u"Rizières", "213" ) +ST.SetColor( u"Rizières", QColor( 230, 230, 0 ) ) -ST.SetAttrName( "CODE_06" ); +ST.Set( u"Zones portuaires", 1.0123 ) +ST.SetAttrValue( u"Zones portuaires", "123" ) +ST.SetColor( u"Zones portuaires", QColor( 230, 204, 204 ) ) -ST.Set( u"Zones de champs, prairies, sans cultures", 20 ); -ST.SetAttrValue( u"Zones de champs, prairies, sans cultures", "511" ); -ST.SetColor( u"Zones de champs, prairies, sans cultures", QColor( 255, 0, 0 ) ); +ST.Set( u"Zones industrielles ou commerciales et installations publiques", 1.0121 ) +ST.SetAttrValue( u"Zones industrielles ou commerciales et installations publiques", "121" ) +ST.SetColor( u"Zones industrielles ou commerciales et installations publiques", QColor( 204, 77, 242 ) ) -ST.Set( u"Zones à faible urbanization (bourg)", 9 ); -ST.SetAttrValue( u"Zones à faible urbanization (bourg)", "" ); -ST.SetColor( u"Zones à faible urbanization (bourg)", QColor( 0, 0, 255 ) ); +ST.Set( u"Marais salants", 1.0422 ) +ST.SetAttrValue( u"Marais salants", "422" ) +ST.SetColor( u"Marais salants", QColor( 230, 230, 255 ) ) -ST.Set( u"Zones de champs cultivé à végétation haute", 12.5 ); -ST.SetAttrValue( u"Zones de champs cultivé à végétation haute", "" ); -ST.SetColor( u"Zones de champs cultivé à végétation haute", QColor( 0, 255, 0 ) ); +ST.Set( u"Marais intérieurs", 1.0411 ) +ST.SetAttrValue( u"Marais intérieurs", "411" ) +ST.SetColor( u"Marais intérieurs", QColor( 166, 166, 255 ) ) -ST.Set( u"Canaux artificiels en béton", 65 ); -ST.SetAttrValue( u"Canaux artificiels en béton", "" ); -ST.SetColor( u"Canaux artificiels en béton", QColor( 136, 136, 136 ) ); +ST.Set( u"Espaces verts urbains", 1.0141 ) +ST.SetAttrValue( u"Espaces verts urbains", "141" ) +ST.SetColor( u"Espaces verts urbains", QColor( 255, 166, 255 ) ) -ST.Set( u"Canaux naturels", 35 ); -ST.SetAttrValue( u"Canaux naturels", "" ); -ST.SetColor( u"Canaux naturels", QColor( 255, 0, 255 ) ); +ST.Set( u"Lagunes littorales", 1.0521 ) +ST.SetAttrValue( u"Lagunes littorales", "521" ) +ST.SetColor( u"Lagunes littorales", QColor( 0, 255, 166 ) ) -ST.Set( u"Zones à forte urbanization (agglomération)", 9 ); -ST.SetAttrValue( u"Zones à forte urbanization (agglomération)", "" ); -ST.SetColor( u"Zones à forte urbanization (agglomération)", QColor( 18, 52, 86 ) ); +ST.Set( u"Roches nues", 1.0332 ) +ST.SetAttrValue( u"Roches nues", "332" ) +ST.SetColor( u"Roches nues", QColor( 204, 204, 204 ) ) -ST.Set( u"Zones de champs cultivé à végétation basse", 17.5 ); -ST.SetAttrValue( u"Zones de champs cultivé à végétation basse", "512" ); -ST.SetColor( u"Zones de champs cultivé à végétation basse", QColor( 255, 255, 0 ) ); +ST.Set( u"Terres arables hors périmètres d'irrigation", 1.0211 ) +ST.SetAttrValue( u"Terres arables hors périmètres d'irrigation", "211" ) +ST.SetColor( u"Terres arables hors périmètres d'irrigation", QColor( 255, 255, 168 ) ) -ST.Set( u"Zones d'arbustes, de sous-bois", 10 ); -ST.SetAttrValue( u"Zones d'arbustes, de sous-bois", "" ); -ST.SetColor( u"Zones d'arbustes, de sous-bois", QColor( 0, 255, 255 ) ); +ST.Set( u"Zones intertidales", 1.0423 ) +ST.SetAttrValue( u"Zones intertidales", "423" ) +ST.SetColor( u"Zones intertidales", QColor( 166, 166, 230 ) ) -ST.Update(); +ST.Update() diff --git a/src/HYDRO_tests/test_HYDROData_LandCoverMap.cxx b/src/HYDRO_tests/test_HYDROData_LandCoverMap.cxx index c7e3b4c7..e0e5c84c 100644 --- a/src/HYDRO_tests/test_HYDROData_LandCoverMap.cxx +++ b/src/HYDRO_tests/test_HYDROData_LandCoverMap.cxx @@ -60,18 +60,34 @@ void test_HYDROData_LandCoverMap::test_add_2_objects() CPPUNIT_ASSERT_EQUAL( KIND_LAND_COVER_MAP, aMap->GetKind() ); TopoDS_Face aLC1 = Face( QList() << 10 << 10 << 50 << 20 << 30 << 50 << 15 << 30 ); + //DEBTRACE("--- ajout test1 " << aLC1); CPPUNIT_ASSERT_EQUAL( true, aMap->LocalPartition( aLC1, "test1" ) ); TopoDS_Face aLC2 = Face( QList() << 30 << 20 << 60 << 10 << 70 << 35 << 40 << 40 ); + //DEBTRACE("--- ajout test2 " << aLC2); CPPUNIT_ASSERT_EQUAL( true, aMap->LocalPartition( aLC2, "test2" ) ); + HYDROData_LandCoverMap::Explorer anIt( aMap ); + CPPUNIT_ASSERT_EQUAL( true, anIt.More() ); + //DEBTRACE(anIt.Face() << " " << anIt.StricklerType()); + CPPUNIT_ASSERT_EQUAL( QString( "test1" ), anIt.StricklerType() ); + anIt.Next(); + //DEBTRACE(anIt.Face() << " " << anIt.StricklerType()); + CPPUNIT_ASSERT_EQUAL( true, anIt.More() ); + CPPUNIT_ASSERT_EQUAL( QString( "test2" ), anIt.StricklerType() ); + anIt.Next(); + CPPUNIT_ASSERT_EQUAL( false, anIt.More() ); + + //DEBTRACE("--- show") TestViewer::show( aMap->GetShape(), AIS_Shaded, true, "LandCoverMap_Add_2_Objects" ); CPPUNIT_ASSERT_IMAGES - HYDROData_LandCoverMap::Explorer anIt( aMap ); + anIt.Init(*aMap); CPPUNIT_ASSERT_EQUAL( true, anIt.More() ); + //DEBTRACE(anIt.Face() << " " << anIt.StricklerType()); CPPUNIT_ASSERT_EQUAL( QString( "test1" ), anIt.StricklerType() ); anIt.Next(); + //DEBTRACE(anIt.Face() << " " << anIt.StricklerType()); CPPUNIT_ASSERT_EQUAL( true, anIt.More() ); CPPUNIT_ASSERT_EQUAL( QString( "test2" ), anIt.StricklerType() ); anIt.Next(); @@ -1071,17 +1087,17 @@ void test_HYDROData_LandCoverMap::test_export_telemac() Handle(HYDROData_LandCoverMap)::DownCast( aDoc->CreateObject( KIND_LAND_COVER_MAP ) ); TopoDS_Face aLC1 = Face( QList() << 12 << 19 << 82 << 9 << 126 << 53 << 107 << 80 << 29 << 75 ); - CPPUNIT_ASSERT_EQUAL( true, aMap->LocalPartition( aLC1, "Zones de champs cultivé à végétation basse" ) ); + CPPUNIT_ASSERT_EQUAL( true, aMap->LocalPartition( aLC1, "Forêt et végétation arbustive en mutation" ) ); TopoDS_Face aLC2 = Face( QList() << 21 << 34 << 24 << 25 << 37 << 37 << 40 << 61 << 44 << 95 << 85 << 100 << 104 << 66 << 107 << 33 << 128 << 18 << 140 << 50 << 131 << 89 << 104 << 111 << 31 << 114 ); - CPPUNIT_ASSERT_EQUAL( true, aMap->LocalPartition( aLC2, "Zones de champs cultivé à végétation haute" ) ); + CPPUNIT_ASSERT_EQUAL( true, aMap->LocalPartition( aLC2, "Forêts de conifères" ) ); TopoDS_Face aLC3 = Face( QList() << 4 << 54 << 1 << 47 << 51 << 45 << 127 << 42 << 145 << 43 << 148 << 60 << 90 << 65 ); - CPPUNIT_ASSERT_EQUAL( true, aMap->LocalPartition( aLC3, "Zones de champs, prairies, sans cultures" ) ); + CPPUNIT_ASSERT_EQUAL( true, aMap->LocalPartition( aLC3, "Forêts de feuillus" ) ); QString aTmpFileName = "test.telemac"; QString aTmpPath = QDir::tempPath() + "/" + aTmpFileName; @@ -1100,10 +1116,10 @@ void test_HYDROData_LandCoverMap::test_copy() aMap->SetName( "map_1" ); TopoDS_Face aLC1 = Face( QList() << 10 << 10 << 30 << 10 << 20 << 20 ); - CPPUNIT_ASSERT_EQUAL( true, aMap->LocalPartition( aLC1, "Zones de champs cultivé à végétation basse" ) ); + CPPUNIT_ASSERT_EQUAL( true, aMap->LocalPartition( aLC1, "Forêts de conifères" ) ); TopoDS_Face aLC2 = Face( QList() << 110 << 10 << 130 << 10 << 120 << 20 ); - CPPUNIT_ASSERT_EQUAL( true, aMap->LocalPartition( aLC2, "Zones de champs cultivé à végétation haute" ) ); + CPPUNIT_ASSERT_EQUAL( true, aMap->LocalPartition( aLC2, "Forêts de feuillus" ) ); Handle(HYDROData_LandCoverMap) aMap2 = Handle(HYDROData_LandCoverMap)::DownCast( aDoc->CreateObject( KIND_LAND_COVER_MAP ) ); @@ -1112,11 +1128,11 @@ void test_HYDROData_LandCoverMap::test_copy() CPPUNIT_ASSERT_EQUAL( QString( "map_2" ), aMap2->GetName() ); HYDROData_LandCoverMap::Explorer anIt( aMap2 ); CPPUNIT_ASSERT_EQUAL( true, anIt.More() ); - CPPUNIT_ASSERT_EQUAL( QString( "Zones de champs cultivé à végétation basse" ), anIt.StricklerType() ); + CPPUNIT_ASSERT_EQUAL( QString( "Forêts de conifères" ), anIt.StricklerType() ); CPPUNIT_ASSERT( anIt.Face().TShape()!=aLC1.TShape() ); anIt.Next(); CPPUNIT_ASSERT_EQUAL( true, anIt.More() ); - CPPUNIT_ASSERT_EQUAL( QString( "Zones de champs cultivé à végétation haute" ), anIt.StricklerType() ); + CPPUNIT_ASSERT_EQUAL( QString( "Forêts de feuillus" ), anIt.StricklerType() ); CPPUNIT_ASSERT( anIt.Face().TShape()!=aLC2.TShape() ); anIt.Next(); CPPUNIT_ASSERT_EQUAL( false, anIt.More() ); diff --git a/src/HYDRO_tests/test_HYDROData_StricklerTable.cxx b/src/HYDRO_tests/test_HYDROData_StricklerTable.cxx index b58f0f2d..c3248c54 100644 --- a/src/HYDRO_tests/test_HYDROData_StricklerTable.cxx +++ b/src/HYDRO_tests/test_HYDROData_StricklerTable.cxx @@ -40,17 +40,17 @@ void test_HYDROData_StricklerTable::test_import() CPPUNIT_ASSERT_EQUAL( true, aTable->Import( DEF_STR_PATH ) ); QStringList aTypes = aTable->GetTypes(); - CPPUNIT_ASSERT_EQUAL( 8, aTypes.size() ); + CPPUNIT_ASSERT_EQUAL( 44, aTypes.size() ); CPPUNIT_ASSERT_EQUAL( QString( "CODE_06" ), aTable->GetAttrName() ); - QString aType = "Zones de champs cultivé à végétation basse"; - CPPUNIT_ASSERT_EQUAL( aType, aTypes[3] ); + QString aType = "Périmètres irrigués en permanence"; + CPPUNIT_ASSERT_EQUAL( aType, aTypes[25] ); CPPUNIT_ASSERT_EQUAL( QColor( 255, 255, 0 ), aTable->GetColor( aType ) ); - CPPUNIT_ASSERT_EQUAL( QString( "512" ), aTable->GetAttrValue( aType ) ); + CPPUNIT_ASSERT_EQUAL( QString( "212" ), aTable->GetAttrValue( aType ) ); - aType = "Zones à forte urbanization (agglomération)"; - CPPUNIT_ASSERT_EQUAL( aType, aTypes[7] ); - CPPUNIT_ASSERT_EQUAL( QColor( 18, 52, 86 ), aTable->GetColor( aType ) ); + aType = "Végétation clairsemée"; + CPPUNIT_ASSERT_EQUAL( aType, aTypes[38] ); + CPPUNIT_ASSERT_EQUAL( QColor( 164, 25, 164 ), aTable->GetColor( aType ) ); CPPUNIT_ASSERT_EQUAL( QString( "" ), aTable->GetAttrValue( aType ) ); aDoc->Close(); @@ -74,13 +74,13 @@ void test_HYDROData_StricklerTable::test_import_export_equivalence() QByteArray aRefContents = aRefFile.readAll(); QByteArray aTmpContents = aTmpFile.readAll(); - bool isEqual = aRefContents.size()==aTmpContents.size(); - CPPUNIT_ASSERT_EQUAL( true, isEqual ); - for( int i=0, n=aRefContents.size(); isEqual && iImport( DEF_STR_PATH ) ); - CPPUNIT_ASSERT_EQUAL( QString( "Zones de champs cultivé à végétation basse" ), aTable->GetType( "512" ) ); - CPPUNIT_ASSERT_EQUAL( QString( "" ), aTable->GetType( "123" ) ); + CPPUNIT_ASSERT_EQUAL( QString( "Plans d'eau" ), aTable->GetType( "512" ) ); + CPPUNIT_ASSERT_EQUAL( QString( "" ), aTable->GetType( "125" ) ); CPPUNIT_ASSERT_EQUAL( QString( "" ), aTable->GetType( "" ) ); aDoc->Close(); @@ -229,7 +229,7 @@ void test_HYDROData_StricklerTable::test_add_row_in_gui_refs_717() HYDROGUI_StricklerTableDlg* aDlg = new HYDROGUI_StricklerTableDlg( 0, "", 0 ); aDlg->setGuiData( aTable ); - CPPUNIT_ASSERT_EQUAL( 8, aDlg->myTable->rowCount() ); + CPPUNIT_ASSERT_EQUAL( 44, aDlg->myTable->rowCount() ); aDlg->onAddCoefficient(); aDlg->getGuiData( aTable ); -- 2.39.2