[gdal-dev] Odd 1.7.3 <> 1.8.0 trunk OGR difference (shapefile
driver?)
Even Rouault
even.rouault at mines-paris.org
Tue Dec 14 15:27:11 EST 2010
Roger,
thanks for your report and the precise spotting of the problem.
The regression of behaviour you saw was not intended at all. It is now fixed in
SVN (r21257) and I've added new test cases in the test suite r21258 to match
that use case.
Best regards,
Even
Le mardi 14 décembre 2010 19:41:42, Roger Bivand a écrit :
> Hi,
>
> Agus Lobo has drawn my attention to an oddity (here using GADM Tunisia
> shapefiles) introduced between 1.7.3 and current(ish) trunk:
>
> $ ogr2ogr --version
> GDAL 1.7.3, released 2010/11/10
> $ ls TUN*
> TUN_adm0.dbf TUN_adm0.shp TUN_adm1.sbn TUN_adm2.dbf TUN_adm2.shp
> TUN_adm0.prj TUN_adm0.shx TUN_adm1.sbx TUN_adm2.prj TUN_adm2.shx
> TUN_adm0.sbn TUN_adm1.dbf TUN_adm1.shp TUN_adm2.sbn TUN_adm.zip
> TUN_adm0.sbx TUN_adm1.prj TUN_adm1.shx TUN_adm2.sbx TUN_readme.txt
> $ ogr2ogr -f "ESRI Shapefile" TUN TUN_adm0.shp -nln TUN
> $ ls TUN*
> TUN_adm0.dbf TUN_adm0.shp TUN_adm1.sbn TUN_adm2.dbf TUN_adm2.shp
> TUN_adm0.prj TUN_adm0.shx TUN_adm1.sbx TUN_adm2.prj TUN_adm2.shx
> TUN_adm0.sbn TUN_adm1.dbf TUN_adm1.shp TUN_adm2.sbn TUN_adm.zip
> TUN_adm0.sbx TUN_adm1.prj TUN_adm1.shx TUN_adm2.sbx TUN_readme.txt
>
> TUN:
> TUN.dbf TUN.prj TUN.shp TUN.shx
>
> where:
>
> ogr2ogr -f "ESRI Shapefile" TUN TUN_adm0.shp -nln TUN
>
> creates a new DSN (TUN), and populates it with files. But in 1.8.0 (SVN
> 21235):
>
> $ rm -rf TUN TUN.*
> # swap GDAL versions
> $ ogr2ogr --version
> GDAL 1.8dev, released 2010/01/19
> $ ogr2ogr --version
> GDAL 1.8dev, released 2010/01/19
> [rsb at reclus2 bigshape]$ ogr2ogr -f "ESRI Shapefile" TUN TUN_adm0.shp -nln
> TUN
> [rsb at reclus2 bigshape]$ ls TUN*
> TUN_adm0.dbf TUN_adm0.shx TUN_adm1.shp TUN_adm2.sbx TUN.prj
> TUN_adm0.prj TUN_adm1.dbf TUN_adm1.shx TUN_adm2.shp TUN_readme.txt
> TUN_adm0.sbn TUN_adm1.prj TUN_adm2.dbf TUN_adm2.shx TUN.shp
> TUN_adm0.sbx TUN_adm1.sbn TUN_adm2.prj TUN_adm.zip TUN.shx
> TUN_adm0.shp TUN_adm1.sbx TUN_adm2.sbn TUN.dbf
>
> TUN:
>
> it creates the new DSN directory, but does not put the files inside it,
> but rather in the working directory. If the new DSN and layer have
> different names:
>
> $ rm -rf TUN TUN.*
> $ ls TUN*
> $ ogr2ogr -f "ESRI Shapefile" TUN TUN_adm0.shp -nln TUN0
> $ ls TUN*
>
> it works. This also affects the R OGR interface, but it can be reproduced
> with ogr2ogr, so it is inside OGR somewhere. Is the change intended?
>
> With a different driver, it also works, so maybe it is in shape:
>
> $ rm -rf TUN TUN.*
> $ ogr2ogr -f "Mapinfo File" TUN TUN_adm0.shp -nln TUN
> $ ls TUN*
> TUN_adm0.dbf TUN_adm0.shp TUN_adm1.sbn TUN_adm2.dbf TUN_adm2.shp
> TUN_adm0.prj TUN_adm0.shx TUN_adm1.sbx TUN_adm2.prj TUN_adm2.shx
> TUN_adm0.sbn TUN_adm1.dbf TUN_adm1.shp TUN_adm2.sbn TUN_adm.zip
> TUN_adm0.sbx TUN_adm1.prj TUN_adm1.shx TUN_adm2.sbx TUN_readme.txt
>
> TUN:
> TUN.dat TUN.id TUN.map TUN.tab
>
> as expected. Have the changes "to improve the user Shapefile experience"
> got overenthusiastic, maybe? This breaks existing behaviour, so needs
> justification if sustained. It looks like line 509 in
>
> trunk/gdal/ogr/ogrsf_frmts/shape/ogrshapedatasource.cpp
>
> with:
>
> EQUAL(CPLGetBasename(pszName), pszLayerName))
>
> being the smoking gun change? The DSN is TUN, not TUN.shp, but is being
> mistaken for TUN.shp, isn't it?
>
> Best wishes,
>
> Roger
More information about the gdal-dev
mailing list