Re: [gdal-dev] S57 objects’ catalog reload

2018-02-12 Thread Even Rouault
Jerome,

> Thank you for your quick answer,
> We work with C#, and unfortunately, we didn’t find GDALDriverManager API.

There's in fact a more radical solution, and that should be available in C# as 
it is in the generic 
SWIG .i files

In Python (and likely the same in C#):
gdal.GDALDestroyDriverManager()
gdal.AllRegister()


> 
> Instead, we tried algorithm you proposed with OGR
> Driver.DeRegister()/Register() : this does not work, csv change is not
> taked into account (csv file seems to be cached)

Yes, Driver.DeRegister() just removes the driver from the list of drivers that 
are tried, but 
that doesn't destroy it.

Even

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com
___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Re: [gdal-dev] S57 objects’ catalog reload

2018-02-12 Thread Jerome Siot
Hi Even,
Thank you for your quick answer,
We work with C#, and unfortunately, we didn’t find GDALDriverManager API.

Instead, we tried algorithm you proposed with OGR 
Driver.DeRegister()/Register() : this does not work, csv change is not taked 
into account (csv file seems to be cached)

--
Jerome

From: Even Rouault [mailto:even.roua...@spatialys.com]
Sent: Friday, February 9, 2018 2:53 PM
To: gdal-dev@lists.osgeo.org
Cc: Jerome Siot
Subject: Re: [gdal-dev] S57 objects’ catalog reload


Jerome,



>

> I would like to change the s57 objects’ catalog while running between two

> open of datasources. How can I make S57ObjectClasses.csv reloaded ?

> Or how can I change the loaded S57ObjectClasses ?



If your workflow is



open dataset 1

work with it

close dataset 1

change .csv file

open dataset 2

work with it

close dataset 2



then after "change .csv file", you could unload and reload the S57 driver so 
that the S57ClassRegistrar singleton gets destroyed and reloaded, with 
something like (untested):



GDALDriverManager* poDM = GetGDALDriverManager();

GDALDriver* poDrv = poDM->GetDriverByName("S57");

poDM->DeregisterDriver(poDrv);

delete poDrv;

RegisterOGRS57();



If you need to operate on 2 simultaneously opened datasets with different .csv 
files, then changes would be needed in the S57 driver.



Even



--

Spatialys - Geospatial professional services

http://www.spatialys.com
___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Re: [gdal-dev] S57 objects’ catalog reload

2018-02-09 Thread Even Rouault
Jerome,

> 
> I would like to change the s57 objects’ catalog while running between two
> open of  datasources. How can I make S57ObjectClasses.csv reloaded ?
> Or how can I change the loaded S57ObjectClasses ?

If your workflow is

open dataset 1
work with it
close dataset 1
change .csv file
open dataset 2
work with it
close dataset 2

then after "change .csv file", you could unload and reload the S57 driver so 
that the 
S57ClassRegistrar singleton gets destroyed and reloaded, with something like 
(untested):

GDALDriverManager* poDM = GetGDALDriverManager();
GDALDriver* poDrv = poDM->GetDriverByName("S57");
poDM->DeregisterDriver(poDrv);
delete poDrv;
RegisterOGRS57();

If you need to operate on 2 simultaneously opened datasets with different .csv 
files, then 
changes would be needed in the S57 driver.

Even

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com
___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev