Skip to content

Commit e626419

Browse files
vcloarecnyalldawson
authored andcommittedMar 1, 2023
MDAL v1.0.2
1 parent 05eefc9 commit e626419

File tree

6 files changed

+125
-55
lines changed

6 files changed

+125
-55
lines changed
 

‎external/mdal/frmts/mdal_gdal.cpp

Lines changed: 46 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ bool MDAL::DriverGdal::initVertices( Vertices &vertices )
111111
return is_longitude_shifted;
112112
}
113113

114-
void MDAL::DriverGdal::initFaces( Vertices &Vertexs, Faces &Faces, bool is_longitude_shifted )
114+
void MDAL::DriverGdal::initFaces( const Vertices &Vertexs, Faces &Faces, bool is_longitude_shifted )
115115
{
116116
int reconnected = 0;
117117
unsigned int mXSize = meshGDALDataset()->mXSize;
@@ -587,7 +587,7 @@ std::unique_ptr<MDAL::Mesh> MDAL::DriverGdal::load( const std::string &fileName,
587587
}
588588
}
589589

590-
for ( std::shared_ptr<MDAL::GdalDataset> ds : datasets )
590+
for ( std::shared_ptr<MDAL::GdalDataset> &ds : datasets )
591591
if ( gdal_datasets.empty() || meshes_equals( meshGDALDataset(), ds.get() ) )
592592
gdal_datasets.push_back( ds );
593593

@@ -645,26 +645,28 @@ void MDAL::DriverGdal::parseBandIsVector( std::string &band_name, bool *is_vecto
645645
{
646646
band_name = MDAL::trim( band_name );
647647

648-
if ( MDAL::startsWith( band_name, "u-", MDAL::CaseInsensitive ) ||
649-
MDAL::startsWith( band_name, "x-", MDAL::CaseInsensitive ) ||
648+
if ( MDAL::contains( band_name, "U wind component", MDAL::CaseInsensitive ) ||
650649
MDAL::contains( band_name, "u-component", MDAL::CaseInsensitive ) ||
651650
MDAL::contains( band_name, "u component", MDAL::CaseInsensitive ) ||
652-
MDAL::contains( band_name, "U wind component", MDAL::CaseInsensitive ) ||
653-
MDAL::startsWith( band_name, "Northward", MDAL::CaseInsensitive ) ||
651+
MDAL::startsWith( band_name, "u-", MDAL::CaseInsensitive ) ||
654652
MDAL::contains( band_name, "x-component", MDAL::CaseInsensitive ) ||
655-
MDAL::contains( band_name, "x component", MDAL::CaseInsensitive ) )
653+
MDAL::contains( band_name, "x component", MDAL::CaseInsensitive ) ||
654+
MDAL::startsWith( band_name, "x-", MDAL::CaseInsensitive ) ||
655+
MDAL::contains( band_name, "eastward", MDAL::CaseInsensitive ) ||
656+
MDAL::contains( band_name, "zonal", MDAL::CaseInsensitive ) )
656657
{
657658
*is_vector = true; // vector
658659
*is_x = true; //X-Axis
659660
}
660-
else if ( MDAL::startsWith( band_name, "v-", MDAL::CaseInsensitive ) ||
661-
MDAL::startsWith( band_name, "y-", MDAL::CaseInsensitive ) ||
661+
else if ( MDAL::contains( band_name, "V wind component", MDAL::CaseInsensitive ) ||
662662
MDAL::contains( band_name, "v-component", MDAL::CaseInsensitive ) ||
663663
MDAL::contains( band_name, "v component", MDAL::CaseInsensitive ) ||
664-
MDAL::contains( band_name, "V wind component", MDAL::CaseInsensitive ) ||
665-
MDAL::startsWith( band_name, "Eastward", MDAL::CaseInsensitive ) ||
664+
MDAL::startsWith( band_name, "v-", MDAL::CaseInsensitive ) ||
666665
MDAL::contains( band_name, "y-component", MDAL::CaseInsensitive ) ||
667-
MDAL::contains( band_name, "y component", MDAL::CaseInsensitive ) )
666+
MDAL::contains( band_name, "y component", MDAL::CaseInsensitive ) ||
667+
MDAL::startsWith( band_name, "y-", MDAL::CaseInsensitive ) ||
668+
MDAL::contains( band_name, "northward", MDAL::CaseInsensitive ) ||
669+
MDAL::contains( band_name, "meridional", MDAL::CaseInsensitive ) )
668670
{
669671
*is_vector = true; // vector
670672
*is_x = false; //Y-Axis
@@ -677,30 +679,48 @@ void MDAL::DriverGdal::parseBandIsVector( std::string &band_name, bool *is_vecto
677679

678680
if ( *is_vector )
679681
{
680-
band_name = MDAL::replace( band_name, "u-component of", "", MDAL::CaseInsensitive );
681-
band_name = MDAL::replace( band_name, "v-component of", "", MDAL::CaseInsensitive );
682+
682683
band_name = MDAL::replace( band_name, "U wind component", "wind", MDAL::CaseInsensitive );
683684
band_name = MDAL::replace( band_name, "V wind component", "wind", MDAL::CaseInsensitive );
684-
band_name = MDAL::replace( band_name, "Northward", "", MDAL::CaseInsensitive );
685-
band_name = MDAL::replace( band_name, "Eastward", "", MDAL::CaseInsensitive );
686-
band_name = MDAL::replace( band_name, "x-component of", "", MDAL::CaseInsensitive );
687-
band_name = MDAL::replace( band_name, "y-component of", "", MDAL::CaseInsensitive );
685+
686+
band_name = MDAL::replace( band_name, "u-component of", "", MDAL::CaseInsensitive );
687+
band_name = MDAL::replace( band_name, "v-component of", "", MDAL::CaseInsensitive );
688688
band_name = MDAL::replace( band_name, "u-component", "", MDAL::CaseInsensitive );
689689
band_name = MDAL::replace( band_name, "v-component", "", MDAL::CaseInsensitive );
690-
band_name = MDAL::replace( band_name, "x-component", "", MDAL::CaseInsensitive );
691-
band_name = MDAL::replace( band_name, "y-component", "", MDAL::CaseInsensitive );
690+
band_name = MDAL::replace( band_name, "u-", "", MDAL::CaseInsensitive );
691+
band_name = MDAL::replace( band_name, "v-", "", MDAL::CaseInsensitive );
692+
692693
band_name = MDAL::replace( band_name, "u component of", "", MDAL::CaseInsensitive );
693694
band_name = MDAL::replace( band_name, "v component of", "", MDAL::CaseInsensitive );
694-
band_name = MDAL::replace( band_name, "x component of", "", MDAL::CaseInsensitive );
695-
band_name = MDAL::replace( band_name, "y component of", "", MDAL::CaseInsensitive );
696695
band_name = MDAL::replace( band_name, "u component", "", MDAL::CaseInsensitive );
697696
band_name = MDAL::replace( band_name, "v component", "", MDAL::CaseInsensitive );
698-
band_name = MDAL::replace( band_name, "x component", "", MDAL::CaseInsensitive );
699-
band_name = MDAL::replace( band_name, "y component", "", MDAL::CaseInsensitive );
700-
band_name = MDAL::replace( band_name, "u-", "", MDAL::CaseInsensitive );
701-
band_name = MDAL::replace( band_name, "v-", "", MDAL::CaseInsensitive );
697+
698+
band_name = MDAL::replace( band_name, "x-component of", "", MDAL::CaseInsensitive );
699+
band_name = MDAL::replace( band_name, "y-component of", "", MDAL::CaseInsensitive );
700+
band_name = MDAL::replace( band_name, "x-component", "", MDAL::CaseInsensitive );
701+
band_name = MDAL::replace( band_name, "y-component", "", MDAL::CaseInsensitive );
702702
band_name = MDAL::replace( band_name, "x-", "", MDAL::CaseInsensitive );
703703
band_name = MDAL::replace( band_name, "y-", "", MDAL::CaseInsensitive );
704+
705+
band_name = MDAL::replace( band_name, "x component of", "", MDAL::CaseInsensitive );
706+
band_name = MDAL::replace( band_name, "y component of", "", MDAL::CaseInsensitive );
707+
band_name = MDAL::replace( band_name, "x component", "", MDAL::CaseInsensitive );
708+
band_name = MDAL::replace( band_name, "y component", "", MDAL::CaseInsensitive );
709+
710+
band_name = MDAL::replace( band_name, "eastward component of", "", MDAL::CaseInsensitive );
711+
band_name = MDAL::replace( band_name, "northward component of", "", MDAL::CaseInsensitive );
712+
band_name = MDAL::replace( band_name, "eastward component", "", MDAL::CaseInsensitive );
713+
band_name = MDAL::replace( band_name, "northward component", "", MDAL::CaseInsensitive );
714+
band_name = MDAL::replace( band_name, "eastward", "", MDAL::CaseInsensitive );
715+
band_name = MDAL::replace( band_name, "northward", "", MDAL::CaseInsensitive );
716+
717+
band_name = MDAL::replace( band_name, "zonal component of", "", MDAL::CaseInsensitive );
718+
band_name = MDAL::replace( band_name, "meridional component of", "", MDAL::CaseInsensitive );
719+
band_name = MDAL::replace( band_name, "zonal component", "", MDAL::CaseInsensitive );
720+
band_name = MDAL::replace( band_name, "meridional component", "", MDAL::CaseInsensitive );
721+
band_name = MDAL::replace( band_name, "zonal", "", MDAL::CaseInsensitive );
722+
band_name = MDAL::replace( band_name, "meridional", "", MDAL::CaseInsensitive );
723+
704724
band_name = MDAL::trim( band_name );
705725
}
706726
}

‎external/mdal/frmts/mdal_gdal.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ namespace MDAL
7979

8080
void registerDriver();
8181

82-
void initFaces( Vertices &nodes, Faces &Faces, bool is_longitude_shifted );
82+
void initFaces( const Vertices &nodes, Faces &Faces, bool is_longitude_shifted );
8383
bool initVertices( Vertices &vertices ); //returns is_longitude_shifted
8484

8585
const GdalDataset *meshGDALDataset();

‎external/mdal/frmts/mdal_hec2d.cpp

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -738,7 +738,7 @@ bool MDAL::DriverHec2D::canReadMesh( const std::string &uri )
738738
{
739739
HdfFile hdfFile = openHdfFile( uri );
740740
std::string fileType = openHdfAttribute( hdfFile, "File Type" );
741-
return canReadFormat( fileType ) || canReadFormat505( fileType );
741+
return canReadFormat( fileType );
742742
}
743743
catch ( MDAL_Status )
744744
{
@@ -752,17 +752,12 @@ bool MDAL::DriverHec2D::canReadMesh( const std::string &uri )
752752

753753
bool MDAL::DriverHec2D::canReadFormat( const std::string &fileType ) const
754754
{
755-
return fileType == "HEC-RAS Results";
755+
return fileType == "HEC-RAS Results" || fileType == "HEC-RAS Geometry";
756756
}
757757

758-
bool MDAL::DriverHec2D::canReadFormat505( const std::string &fileType ) const
758+
std::unique_ptr<MDAL::Mesh> MDAL::DriverHec2D::load( const std::string &fileName, const std::string & )
759759
{
760-
return fileType == "HEC-RAS Geometry";
761-
}
762-
763-
std::unique_ptr<MDAL::Mesh> MDAL::DriverHec2D::load( const std::string &resultsFile, const std::string & )
764-
{
765-
mFileName = resultsFile;
760+
mFileName = fileName;
766761
MDAL::Log::resetLastStatus();
767762
mMesh.reset();
768763

@@ -787,22 +782,29 @@ std::unique_ptr<MDAL::Mesh> MDAL::DriverHec2D::load( const std::string &resultsF
787782
parseMesh( gGeom2DFlowAreas, areaElemStartIndex, flowAreaNames );
788783
setProjection( hdfFile );
789784

790-
mTimes = readTimes( hdfFile );
791-
mReferenceTime = readReferenceDateTime( hdfFile );
785+
bool hasResults = hdfFile.pathExists( "Results" );
786+
if ( hasResults )
787+
{
788+
mTimes = readTimes( hdfFile );
789+
mReferenceTime = readReferenceDateTime( hdfFile );
790+
}
792791

793792
//Elevation
794793
std::shared_ptr<MDAL::MemoryDataset2D> bed_elevation = readBedElevation( gGeom2DFlowAreas, areaElemStartIndex, flowAreaNames );
795794

796-
// Element centered Values
797-
readElemResults( hdfFile, bed_elevation, areaElemStartIndex, flowAreaNames );
795+
if ( hasResults )
796+
{
797+
// Element centered Values
798+
readElemResults( hdfFile, bed_elevation, areaElemStartIndex, flowAreaNames );
798799

799-
// Face centered Values
800-
readFaceResults( hdfFile, areaElemStartIndex, flowAreaNames );
800+
// Face centered Values
801+
readFaceResults( hdfFile, areaElemStartIndex, flowAreaNames );
802+
}
801803

802804
}
803805
catch ( MDAL_Status error )
804806
{
805-
MDAL::Log::error( error, name(), "Error occurred while loading file " + resultsFile );
807+
MDAL::Log::error( error, name(), "Error occurred while loading file " + fileName );
806808
mMesh.reset();
807809
}
808810
catch ( MDAL::Error err )

‎external/mdal/frmts/mdal_hec2d.hpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ namespace MDAL
4343
DriverHec2D *create() override;
4444

4545
bool canReadMesh( const std::string &uri ) override;
46-
std::unique_ptr< Mesh > load( const std::string &resultsFile, const std::string &meshName = "" ) override;
46+
std::unique_ptr< Mesh > load( const std::string &fileName, const std::string &meshName = "" ) override;
4747

4848
private:
4949
std::unique_ptr< MDAL::MemoryMesh > mMesh;
@@ -52,12 +52,8 @@ namespace MDAL
5252
std::vector<MDAL::RelativeTimestamp> mTimes ;
5353
DateTime mReferenceTime;
5454

55-
// Regular format
5655
bool canReadFormat( const std::string &fileType ) const;
5756

58-
// 5.0.5 format
59-
bool canReadFormat505( const std::string &fileType ) const;
60-
6157
std::vector<std::string> read2DFlowAreasNamesFromNameDataset( HdfGroup gGeom2DFlowAreas ) const;
6258
std::vector<std::string> read2DFlowAreasNamesFromAttributesDataset( HdfGroup gGeom2DFlowAreas ) const;
6359

‎external/mdal/frmts/mdal_ugrid.cpp

Lines changed: 58 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -531,16 +531,22 @@ void MDAL::DriverUgrid::parseNetCDFVariableMetadata( int varid,
531531
else
532532
{
533533
variableName = standardName;
534-
if ( MDAL::contains( standardName, "_x_" ) )
534+
if ( MDAL::contains( standardName, "_x_" ) ||
535+
MDAL::contains( standardName, "eastward_" ) )
535536
{
536537
*isVector = true;
537538
name = MDAL::replace( standardName, "_x_", "" );
539+
name = MDAL::replace( name, "_eastward_", "" );
540+
name = MDAL::replace( name, "eastward_", "" );
538541
}
539-
else if ( MDAL::contains( standardName, "_y_" ) )
542+
else if ( MDAL::contains( standardName, "_y_" ) ||
543+
MDAL::contains( standardName, "northward_" ) )
540544
{
541545
*isVector = true;
542546
*isX = false;
543547
name = MDAL::replace( standardName, "_y_", "" );
548+
name = MDAL::replace( name, "_northward_", "" );
549+
name = MDAL::replace( name, "northward_", "" );
544550
}
545551
else if ( MDAL::contains( standardName, "_from_direction" ) )
546552
{
@@ -568,18 +574,64 @@ void MDAL::DriverUgrid::parseNetCDFVariableMetadata( int varid,
568574
else
569575
{
570576
variableName = longName;
571-
if ( MDAL::contains( longName, ", x-component" ) || MDAL::contains( longName, "u component of " ) )
577+
if ( MDAL::contains( longName, "x-component" ) ||
578+
MDAL::contains( longName, "x component" ) ||
579+
MDAL::contains( longName, "u-component" ) ||
580+
MDAL::contains( longName, "u component" ) ||
581+
MDAL::contains( longName, "eastward" ) ||
582+
MDAL::contains( longName, "zonal" ) )
572583
{
573584
*isVector = true;
574585
name = MDAL::replace( longName, ", x-component", "" );
575-
name = MDAL::replace( name, "u component of ", "" );
586+
name = MDAL::replace( name, "x-component of", "" );
587+
name = MDAL::replace( name, "x-component", "" );
588+
name = MDAL::replace( name, "x component of", "" );
589+
name = MDAL::replace( name, "x component", "" );
590+
591+
name = MDAL::replace( name, "u-component of", "" );
592+
name = MDAL::replace( name, "u-component", "" );
593+
name = MDAL::replace( name, "u component of", "" );
594+
name = MDAL::replace( name, "u component", "" );
595+
596+
name = MDAL::replace( name, "eastward component of", "" );
597+
name = MDAL::replace( name, "eastward component", "" );
598+
name = MDAL::replace( name, "eastward", "" );
599+
600+
name = MDAL::replace( name, "zonal component of", "" );
601+
name = MDAL::replace( name, "zonal component", "" );
602+
name = MDAL::replace( name, "zonal", "" );
603+
604+
name = MDAL::trim( name );
576605
}
577-
else if ( MDAL::contains( longName, ", y-component" ) || MDAL::contains( longName, "v component of " ) )
606+
else if ( MDAL::contains( longName, "y-component" ) ||
607+
MDAL::contains( longName, "y component" ) ||
608+
MDAL::contains( longName, "v-component" ) ||
609+
MDAL::contains( longName, "v component" ) ||
610+
MDAL::contains( longName, "northward" ) ||
611+
MDAL::contains( longName, "meridional" ) )
578612
{
579613
*isVector = true;
580614
*isX = false;
581615
name = MDAL::replace( longName, ", y-component", "" );
582-
name = MDAL::replace( name, "v component of ", "" );
616+
name = MDAL::replace( name, "y-component of", "" );
617+
name = MDAL::replace( name, "y-component", "" );
618+
name = MDAL::replace( name, "y component of", "" );
619+
name = MDAL::replace( name, "y component", "" );
620+
621+
name = MDAL::replace( name, "v-component of", "" );
622+
name = MDAL::replace( name, "v-component", "" );
623+
name = MDAL::replace( name, "v component of", "" );
624+
name = MDAL::replace( name, "v component", "" );
625+
626+
name = MDAL::replace( name, "northward component of", "" );
627+
name = MDAL::replace( name, "northward component", "" );
628+
name = MDAL::replace( name, "northward", "" );
629+
630+
name = MDAL::replace( name, "meridional component of", "" );
631+
name = MDAL::replace( name, "meridional component", "" );
632+
name = MDAL::replace( name, "meridional", "" );
633+
634+
name = MDAL::trim( name );
583635
}
584636
else if ( MDAL::contains( longName, " magnitude" ) )
585637
{

‎external/mdal/mdal.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ static const char *EMPTY_STR = "";
2121

2222
const char *MDAL_Version()
2323
{
24-
return "1.0.0";
24+
return "1.0.2";
2525
}
2626

2727
MDAL_Status MDAL_LastStatus()

0 commit comments

Comments
 (0)
Please sign in to comment.