[gdal-dev] gdal trunk compatibility

Vincent Schut schut at sarvision.nl
Tue Mar 3 01:06:51 PST 2015


Hi folks,

I'd like to revive this thread a bit, because I'm trying to compile rsgislib (https://bitbucket.org/petebunting/rsgislib, a c++ rs/gis library which links with gdal) against my trunk version of gdal 2.0, which does not work. It does work with gdal 1.x, though. I'd like to get your opinion whether this is something that should be dealt with in rsgislib, or if it is seen as an unwanted incompatability between gdal 1.x and 2.x, and should be fixed in gdal.

Initially I get the following error:

[ 21%] Building CXX object src/CMakeFiles/rsgis_geom.dir/geom/RSGISGeomTestExport.cpp.o
/usr/local/src/rsgislib/src/geom/RSGISGeomTestExport.cpp: In member function ‘void rsgis::geom::RSGISGeomTestExport::exportGEOSPolygons2SHP(std::string, bool, std::list<geos::geom::Polygon*>*)’:
/usr/local/src/rsgislib/src/geom/RSGISGeomTestExport.cpp:291:87: error: invalid conversion from ‘GDALDriver*’ to ‘OGRSFDriver*’ [-fpermissive]
    shpFiledriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(pszDriverName );
                                                                                        ^
/usr/local/src/rsgislib/src/geom/RSGISGeomTestExport.cpp: In member function ‘void rsgis::geom::RSGISGeomTestExport::exportGEOSPolygons2SHP(std::string, bool, std::vector<geos::geom::Polygon*>*)’:
/usr/local/src/rsgislib/src/geom/RSGISGeomTestExport.cpp:364:87: error: invalid conversion from ‘GDALDriver*’ to ‘OGRSFDriver*’ [-fpermissive]
    shpFiledriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(pszDriverName );
                                                                                        ^
/usr/local/src/rsgislib/src/geom/RSGISGeomTestExport.cpp: In member function ‘void rsgis::geom::RSGISGeomTestExport::exportGEOSCoordinates2SHP(std::string, bool, std::vector<geos::geom::Coordinate*>*)’:
/usr/local/src/rsgislib/src/geom/RSGISGeomTestExport.cpp:437:87: error: invalid conversion from ‘GDALDriver*’ to ‘OGRSFDriver*’ [-fpermissive]
    shpFiledriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(pszDriverName );
                                                                                        ^
/usr/local/src/rsgislib/src/geom/RSGISGeomTestExport.cpp: In member function ‘void rsgis::geom::RSGISGeomTestExport::exportGEOSLineStrings2SHP(std::string, bool, std::vector<geos::geom::LineString*>*)’:
/usr/local/src/rsgislib/src/geom/RSGISGeomTestExport.cpp:510:87: error: invalid conversion from ‘GDALDriver*’ to ‘OGRSFDriver*’ [-fpermissive]
    shpFiledriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(pszDriverName );
                                                                                        ^
/usr/local/src/rsgislib/src/geom/RSGISGeomTestExport.cpp: In member function ‘void rsgis::geom::RSGISGeomTestExport::exportGEOSLineSegments2SHP(std::string, bool, std::vector<geos::geom::LineSegment*>*)’:
/usr/local/src/rsgislib/src/geom/RSGISGeomTestExport.cpp:584:87: error: invalid conversion from ‘GDALDriver*’ to ‘OGRSFDriver*’ [-fpermissive]
    shpFiledriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(pszDriverName );
                                                                                        ^
src/CMakeFiles/rsgis_geom.dir/build.make:169: recipe for target 'src/CMakeFiles/rsgis_geom.dir/geom/RSGISGeomTestExport.cpp.o' failed
make[2]: *** [src/CMakeFiles/rsgis_geom.dir/geom/RSGISGeomTestExport.cpp.o] Error 1
CMakeFiles/Makefile2:487: recipe for target 'src/CMakeFiles/rsgis_geom.dir/all' failed
make[1]: *** [src/CMakeFiles/rsgis_geom.dir/all] Error 2


If I rebuild with -fpermissive, compilation continues a bit further, but then halts here:

[ 65%] Building CXX object src/CMakeFiles/rsgis_classify.dir/classifier/RSGISClassificationUtils.cpp.o
/usr/local/src/rsgislib/src/classifier/RSGISClassificationUtils.cpp: In member function ‘void rsgis::classifier::RSGISClassificationUtils::convertShapeFile2SpecLib(std::string, std::string, std::string, std::vector<std::basic_string<char> >*, bool)’:
/usr/local/src/rsgislib/src/classifier/RSGISClassificationUtils.cpp:174:17: error: ‘Open’ is not a member of ‘OGRSFDriverRegistrar’
     inputSHPDS = OGRSFDriverRegistrar::Open(vector.c_str(), FALSE);
                  ^
src/CMakeFiles/rsgis_classify.dir/build.make:77: recipe for target 'src/CMakeFiles/rsgis_classify.dir/classifier/RSGISClassificationUtils.cpp.o' failed
make[2]: *** [src/CMakeFiles/rsgis_classify.dir/classifier/RSGISClassificationUtils.cpp.o] Error 1
CMakeFiles/Makefile2:290: recipe for target 'src/CMakeFiles/rsgis_classify.dir/all' failed
make[1]: *** [src/CMakeFiles/rsgis_classify.dir/all] Error 2


This is clearly a compatibiliby issue with the new gdal 2.0 raster/vector unification. Question is: is this something that should be fixed within gdal, or should it be changed in rsgislib?

Thanks for your insights!
Vincent.



On 12/16/14 11:27, Even Rouault wrote:
> Le mardi 16 décembre 2014 11:06:14, Vincent Schut a écrit :
>> Folks,
>>
>> I'd like to use gdal-trunk (e.g. 2.0) for all the new features and
>> improvements, but I wonder about its compatibility with other software.
>> Is gdal 2.0 supposed to work transparently with libraries/programs that
>> used to link against gdal 1.11, e.g. qgis, postgis, etc.?
>
> Vincent,
>
> They mostly work unmodified, although you could run into a few problems if
> opening a dataset with curve geometries in QGIS for example (but there be some
> work to use OGR curve geometries in QGIS soon)
>
>>
>>
>> Reason I ask is I get a configure error with postgis trying to find gdal:
>>
>> RASTER: Raster support requested
>> checking for gdal-config... /usr/local/bin/gdal-config
>> checking GDAL version... 2.0.0
>> checking for OGR enabled... yes
>> checking gdal.h usability... yes
>> checking gdal.h presence... yes
>> checking for gdal.h... yes
>> checking ogr_api.h usability... yes
>> checking ogr_api.h presence... yes
>> checking for ogr_api.h... yes
>> checking cpl_conv.h usability... yes
>> checking cpl_conv.h presence... yes
>> checking for cpl_conv.h... yes
>> checking for library containing GDALAllRegister... no
>> configure: error: could not find GDAL
>>
>> the last line ("checking for library containing GDALAllRegister...")
>> takes a long time and then fails...
>
> I know PostGIS has a continuous testing system tracking GDAL trunk, so I'd say
> the issue is more on your side. GDALAllRegister is definitely a symbol that
> still exists in GDAL 2.0dev
>
> http://debbie.postgis.net:8080/job/GDAL_PostGIS_Regress/2074/consoleFull
>
> Even
>
>>
>> Thanks,
>> Vincent.
>> _______________________________________________
>> gdal-dev mailing list
>> gdal-dev at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>


More information about the gdal-dev mailing list