Advertisement
Guest User

gdal_layers.cc

a guest
Feb 2nd, 2022
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.55 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/gdal_priv.h"
  6. #include "gdal/ogrsf_frmts.h"
  7.  
  8. int main(int argc, char *argv[]) {
  9.   GDALAllRegister();
  10.  
  11.   GDALDataset *poDS = static_cast<GDALDataset *>(GDALOpenEx(
  12.     argv[1],
  13.     GDAL_OF_VECTOR | GDAL_OF_VERBOSE_ERROR,
  14.     NULL,
  15.     NULL,
  16.     NULL));
  17.  
  18.   if (poDS == NULL) {
  19.     printf("Open failed: %s\n", CPLGetLastErrorMsg());
  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.     printf("File %d: %s\n", ++i, File);
  28.     File = FileList[i];
  29.   }
  30.  
  31.   printf("Driver Name: %s\n", poDS->GetDriverName());
  32.   printf("Layer Count: %d\n", poDS->GetLayerCount());
  33.  
  34.   for (OGRLayer *Layer : poDS->GetLayers()) {
  35.  
  36.     Layer->ResetReading();
  37.     printf("Layer Name: %s\n", Layer->GetName());
  38.     printf("\tFeature Count: %lld\n", Layer->GetFeatureCount());
  39.  
  40.     for (const auto &Feature : Layer) {
  41.       OGRGeometry *Geometry = Feature->GetGeometryRef();
  42.       if (Geometry == nullptr) { continue; }
  43.  
  44.       OGRwkbGeometryType gt = Geometry->getGeometryType();
  45.  
  46.       switch (gt) {
  47.         case wkbPoint: printf("w\tkbPoint\n"); break;
  48.         case wkbPoint25D: printf("\twkbPoint25D\n"); break;
  49.         case wkbLineString: printf("\twkbLineString\n"); break;
  50.         case wkbPolygon: printf("\twkbPolygon\n"); break;
  51.         default: printf("\tDefault\n"); break;
  52.       }
  53.     }
  54.   }
  55.  
  56.   GDALClose(poDS);
  57. }
  58.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement