[gdal-dev] GSOC 2015 proposal - Integration of cpp GDAL utilities into GDAL core library

Even Rouault even.rouault at spatialys.com
Wed Apr 1 08:38:31 PDT 2015


Le mercredi 01 avril 2015 17:24:47, Sean Gillies a écrit :
> Hi all,
> 
> I'm not entirely clear on the signatures of the new functions. Are we
> considering new functions that would be called with a single string
> argument like this?
> 
>   ogr2ogr('-of "ESRI Shapefile" example.shp example.json')
> 
> From my perspective this would be sort of a disaster. Instead of using
> features of our programming languages to handle function arguments (good),
> we'd be formatting strings (bad). It's much better to have this:
> 
>   ogr2ogr('example.json', 'example.shp', of='ESRI Shapefile')
> 
> Why? Your compiler can then catch trivial errors at compile time if you're
> using a statically typed language. Your Python linter (for example) can
> warn you about whether you're calling the function properly or not if
> you're using a dynamic language. Not to mention that there are many
> different ways to generate strings in programming languages. Python has
> some fast ones and some slow ones. I'm concerned that introducing functions
> with a single string argument, while a shortcut now, increases the number
> of dumb string munging questions and cost of support over time.

Sean,

The latest orientation while discuting with Robert & Faza would drop the 
single string approach in favor of function arguments, with a minimal list of 
arguments for the required arguments, and put the others in a dedicated option 
structure.

See:
https://github.com/fazam/gdal/commit/a0979a621b0041d25a9d628430b5f1dd2c967fb5#commitcomment-10173885

Even

> 
> 
> On Fri, Mar 27, 2015 at 2:08 PM, Even Rouault <even.rouault at spatialys.com>
> 
> wrote:
> > Peter,
> > 
> > > Maybe I've missed the point (through over familiarity with GDAL/OGR?)
> > > .... but these utilities were originally branded as 'worked examples'
> > > of how to use the substantive libraries to perform well understood
> > > operations from which usage of the libraries might be readily
> > > understood.  Each utility is itself a commented set of function calls
> > > to the relevent GDAL libraries.
> > 
> > There is non trivial logic involved in some of the utilities (e.g.
> > ogr2ogr) and people have the choice between :
> > - doing a system call ("ogr2ogr ...."), but this isn't practical to deal
> > with
> > progress report, cancellation, or operating on in-memory datasets
> > - copy&pasting the source code of the utility in their own code, and
> > "librarify'ing" it to remove exit(), etc...
> > - learning the GDAL/OGR API to do their own custom processing chain. More
> > powerfull but longer learning curve
> > 
> > So the interest of the project would be to make life easier for people
> > using
> > the first 2 bullets (and I can tell you that there are a lot of people
> > hitting
> > those 2 bullets)
> > 
> > > Why is there a need to duplicate this
> > > in turning the utilities into function calls which then, in turn, must
> > > be called by new stand-alone utilities?
> > > There has to be a loss of
> > > efficiency in sunch a process.
> > 
> > I don't think there will be a loss of efficiency
> > 
> > Instead of ogr2ogr.cpp being currently
> > 
> > int main(...)
> > {
> > 
> >         complex_code
> > 
> > }
> > 
> > you would have (very schematically)
> > 
> > ogr2ogr.cpp:
> > 
> > int main(...)
> > {
> > 
> >        ogr2ogr_options = parse aguments()
> >        return ogr2ogr(ogr2ogr_options)
> > 
> > }
> > 
> > and libgdalutils_ogr2ogr.cpp :
> > 
> > int ogr2ogr(ogr2ogr_options)
> > {
> > 
> >      complex_code (moved from currently existing main)
> > 
> > }
> > 
> > Even
> > 
> > --
> > Spatialys - Geospatial professional services
> > http://www.spatialys.com
> > _______________________________________________
> > gdal-dev mailing list
> > gdal-dev at lists.osgeo.org
> > http://lists.osgeo.org/mailman/listinfo/gdal-dev

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com


More information about the gdal-dev mailing list