Hi, Just wanted to advertize the recent new introduction of C++ iterators over GDALDataset (to iterate over its bands, layers and features), OGRLayer (to iterate overs its features), OGRFeature (to iterate over its field values) and OGRGeometry (if you iterate over a OGRGeometryCollection, you get its members. If you iterate over a OGRPolygon, you get its rings, etc...) Fields can also be get and set using the [] operator on a feature.
Taken from the updated API tutorial : http://gdal.org/ogr_apitut.html #include "ogrsf_frmts.h" int main() { GDALAllRegister(); GDALDatasetUniquePtr poDS(GDALDataset::Open( "point.shp", GDAL_OF_VECTOR)); if( poDS == nullptr ) { printf( "Open failed.\n" ); exit( 1 ); } for( auto&& poLayer: poDS->GetLayers() ) { for( auto&& poFeature: *poLayer ) { for( auto&& oField: *poFeature ) { switch( oField.GetType() ) { case OFTInteger: printf( "%d,", oField.GetInteger() ); break; case OFTInteger64: printf( CPL_FRMT_GIB ",", oField.GetInteger64() ); break; case OFTReal: printf( "%.3f,", oField.GetDouble() ); break; case OFTString: printf( "%s,", oField.GetString() ); break; default: printf( "%s,", oField.GetAsString() ); break; } } } } There's also a visitor over OGRGeometry subclasses that can make life easier ( http://gdal.org/classOGRDefaultConstGeometryVisitor.html ) The autotest cpp stuff starting at https://github.com/OSGeo/gdal/blob/master/autotest/cpp/test_ogr.cpp#L963 should get a good picture of all the new API. Even -- Spatialys - Geospatial professional services http://www.spatialys.com _______________________________________________ gdal-dev mailing list [email protected] https://lists.osgeo.org/mailman/listinfo/gdal-dev
