Advertisement
Guest User

Test S57 read with GDAL C++

a guest
Jan 26th, 2022
468
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.97 KB | None | 0 0
  1. // GDAL_Test.cpp : This file contains the 'main' function. Program execution begins and ends there.
  2. //
  3.  
  4. #include <iostream>
  5. //#include "gdal.h"
  6. #include "ogrsf_frmts/ogrsf_frmts.h"
  7.  
  8. int main()
  9. {
  10.     system("echo GDAL_DATA variable: %GDAL_DATA%");
  11.  
  12.     GDALAllRegister();
  13.    
  14.     GDALDataset* poDS = static_cast<GDALDataset*>(
  15.         GDALOpenEx("C:\\GDAL\\S57Data\\1B5X02NE.000", GDAL_OF_VECTOR, NULL, NULL, NULL));
  16.  
  17.     if (poDS == NULL)
  18.     {
  19.         printf("Open failed.\n");
  20.         exit(1);
  21.     }
  22.     printf("FileList\n");
  23.     char** FileList = poDS->GetFileList();
  24.     char* File = FileList[0];
  25.     int i = 0;
  26.     while (File != nullptr)
  27.     {
  28.         printf("File %d: %s\n",++i,File);
  29.         File = FileList[i];
  30.     }
  31.    
  32.     printf("Driver Name: %s\n", poDS->GetDriverName());
  33.     printf("Layer Count: %d\n", poDS->GetLayerCount());
  34.  
  35.     for (OGRLayer* Layer : poDS->GetLayers())
  36.     {
  37.        
  38.         Layer->ResetReading();
  39.         printf("Layer Name: %s\n", Layer->GetName());
  40.         //printf("Feature Count: %d\n", Layer->GetFeatureCount());
  41.         continue;
  42.         for (const auto& Feature : Layer)
  43.         {
  44.             OGRGeometry* Geometry = Feature->GetGeometryRef();
  45.             if (Geometry == nullptr)
  46.             {
  47.                 continue;
  48.             }
  49.  
  50.             OGRwkbGeometryType gt = Geometry->getGeometryType();
  51.  
  52.             switch (gt)
  53.             {
  54.                 case wkbPoint:
  55.                     printf("wkbPoint\n");
  56.                     break;
  57.                 case wkbPoint25D:
  58.                     printf("wkbPoint25D\n");
  59.                     break;
  60.                 case wkbLineString:
  61.                     printf("wkbLineString\n");
  62.                     break;
  63.                 case wkbPolygon:
  64.                     printf("wkbPolygon\n");
  65.                     break;
  66.                 default:
  67.                     printf("Default\n");
  68.                     break;
  69.             }
  70.         }
  71.     }
  72.  
  73.     GDALClose(poDS);
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement