33
33
*/
34
34
35
35
#include " Map3d.h"
36
+ #include < ogrsf_frmts.h>
36
37
37
38
Map3d::Map3d () {
38
39
OGRRegisterAll ();
@@ -488,7 +489,6 @@ bool Map3d::get_postgis_output(std::string connstr, bool pdok, bool citygml) {
488
489
std::cerr << " ERROR: Cannot open database '" + connstr + " ' for writing" << std::endl;
489
490
dataSource->RollbackTransaction ();
490
491
GDALClose (dataSource);
491
- // GDALClose(driver);
492
492
return false ;
493
493
}
494
494
layers.emplace (layername, layer);
@@ -544,7 +544,6 @@ bool Map3d::get_postgis_output(std::string connstr, bool pdok, bool citygml) {
544
544
return false ;
545
545
}
546
546
GDALClose (dataSource);
547
- // GDALClose(driver);
548
547
return true ;
549
548
#endif
550
549
}
@@ -559,32 +558,30 @@ bool Map3d::get_gdal_output(std::string filename, std::string drivername, bool m
559
558
GDALDriver *driver = GetGDALDriverManager ()->GetDriverByName (drivername.c_str ());
560
559
561
560
if (!multi) {
562
- OGRLayer *layer = create_gdal_layer (driver, NULL , filename, " my3dmap" , AttributeMap (), true );
561
+ GDALDataset* dataSource;
562
+ OGRLayer *layer = create_gdal_layer (driver, dataSource, filename, " my3dmap" , AttributeMap (), true );
563
563
if (layer == NULL ) {
564
564
std::cerr << " ERROR: Cannot open file '" + filename + " ' for writing" << std::endl;
565
- GDALClose (layer);
566
- // GDALClose(driver);
567
565
return false ;
568
566
}
569
567
for (auto & f : _lsFeatures) {
570
568
f->get_shape (layer, false );
571
569
}
572
- GDALClose (layer);
573
- // GDALClose(driver);
570
+ GDALClose (dataSource);
574
571
}
575
572
else {
576
573
std::unordered_map<std::string, OGRLayer*> layers;
574
+ GDALDataset* dataSource;
577
575
for (auto & f : _lsFeatures) {
578
576
std::string layername = f->get_layername ();
579
577
if (layers.find (layername) == layers.end ()) {
580
578
std::string tmpFilename = filename;
581
579
if (drivername == " ESRI Shapefile" ) {
582
580
tmpFilename = filename + layername;
583
581
}
584
- OGRLayer *layer = create_gdal_layer (driver, NULL , tmpFilename, layername, f->get_attributes (), f->get_class () == BUILDING);
582
+ OGRLayer *layer = create_gdal_layer (driver, dataSource , tmpFilename, layername, f->get_attributes (), f->get_class () == BUILDING);
585
583
if (layer == NULL ) {
586
584
std::cerr << " ERROR: Cannot open file '" + filename + " ' for writing" << std::endl;
587
- close_gdal_resources (driver, layers);
588
585
return false ;
589
586
}
590
587
layers.emplace (layername, layer);
@@ -593,20 +590,19 @@ bool Map3d::get_gdal_output(std::string filename, std::string drivername, bool m
593
590
return false ;
594
591
}
595
592
}
596
- close_gdal_resources (driver, layers );
593
+ GDALClose (dataSource );
597
594
}
598
595
return true ;
599
596
#endif
600
597
}
601
598
602
- #if GDAL_VERSION_MAJOR >= 2
603
- void Map3d::close_gdal_resources (GDALDriver* driver, std::unordered_map<std::string, OGRLayer*> layers) {
604
- for (auto & layer : layers) {
605
- GDALClose (layer.second );
606
- }
607
- // GDALClose(driver);
608
- }
609
- #endif
599
+ // #if GDAL_VERSION_MAJOR >= 2
600
+ // void Map3d::close_gdal_resources(GDALDriver* driver, std::unordered_map<std::string, OGRLayer*> layers) {
601
+ // for (auto& layer : layers) {
602
+ // GDALClose(layer.second);
603
+ // }
604
+ // }
605
+ // #endif
610
606
611
607
#if GDAL_VERSION_MAJOR >= 2
612
608
OGRLayer* Map3d::create_gdal_layer (GDALDriver* driver, GDALDataset* dataSource, std::string filename, std::string layername, AttributeMap attributes, bool addHeightAttributes) {
0 commit comments