[gdal-dev] Misc. subjects : OSGeo Vienna code sprint, release plans, GDAL 2.0

Even Rouault even.rouault at mines-paris.org
Mon Mar 31 12:03:00 PDT 2014


Hi Etienne,

Thanks for your ideas.

> Hi all,
> 
> I have a few suggestions for gdal 2.0, based on my personal experience in
> learning to use, enhance and maintain gdal/ogr code.
> 
> - replace cpl/csl/string/xml code with a mainstream, modern cross-platform
> toolkit such as QT, boost, etc.

QT is certainly a dependency we wouldn't want to draw. Too big for some 
embededded usage, and it would make GDAL to be practially bound by the LGPL.
I guess standard C++ libraries classes, or perhaps boost, should do the job 
for what you mention below.

> 
> While cpl/csl classes are robust and "do the job", they are not well
> documented and not very intuitive for a new gdal coder. This is from my
> personal experience, some may not agree.
> They are also not used outside gdal, as such do not benefit from
> enhancements as other toolkits.

Well, at least, MapServer uses a few CPL functions : CPL minixml, 
CPLMalloc/CPLFree, CPLReadDir, CPLFormFilename, CPLGetFilename, 
CSLInsertString, etc..

> The drawback is that some data/methods would not be easily available in c
> and other bindings. Also it might not be available for all platforms.
> Existing code would still be able to use cpl/csl code but be deprecated
> until a given release.
> 
> 
> - upgrade/migrate gdal support file (files in .csv format such as gcs.csv)
> reading to use containers (e.g. hash maps) instead of reading the relevant
> .csv files every time
> 
> Current reading of gdal support files is sub-optimal as any query for
> support data requires reading the relevant support file(s). It would be
> more efficient to read these once and cache into a container (such as hash
> map). This could be done using a cross-platform toolkit mentioned earlier.

Another option would be to use a .sqlite database with proper indices. SQLite 
would become a runtime requirement, but I don't think that would be a big 
problem.

> 
> 
> - modify metadata treatment to be able to store/retrieve data in formats
> other than strings (e.g. floats, doubles, boolean), and query the actual
> type of a given metadata item.
> 
> Currently there is no way to know if a given metadata item represents an
> integer, float, double (or string).
> 
> In the netcdf driver, I overcame this limitation in 2 ways:
> 1) parsing the value to test if it is an int, float or double (potentially
> error-prone)
> 2) add an extra metadata item to specify the type of the data represented
> (cumbersome and non-standard)
> 
> My suggestion would be to be able to store metadata value along with its
> data type (default string as previously). This would require some kind of
> container for internal representation (e.g. in qt: QMap<QString, QVariant>)
> and a way to represent this on file (as .aux.xml or otherwise in files that
> support metadata) such as gtiff. Values could be stored as strings to avoid
> big/little endian conversion problems. Data type could be stored in a
> (hidden) metadata domain, one item for each "real" metadata key.

Interesting idea.

Well, we need coders now ;-)

Even

-- 
Geospatial professional services
http://even.rouault.free.fr/services.html


More information about the gdal-dev mailing list