[gdal-dev] Re: Editing attributes with ogr causing corrupt shapefile

Peter J Halls P.Halls at york.ac.uk
Thu Aug 5 02:09:49 EDT 2010


Tom,

    so far as I am aware, neither GDAL/OGR nor ArcGIS update a shapefile in situ 
- I believe that ArcGIS creates a temporary dataset, performs the update as it 
copies the input data over, then deletes and renames to get the replacement.  I 
have used a similar method with Shapelib over the years and have done so with 
OGR more recently.  I think it likely that attempting to update a shapefile 
structure in situ is going always to carry the risk of corruption ...

Best wishes,

Peter

Tom Jeffery wrote:
> Chaitanya,
> 
> I wrote up a method to find and delete geometries that fall outside of the
> reported Extent from the shapefile.  It seems to be doing the trick, though
> with some strange side effects.  
> 
> It finds the bad features properly, and I remove them with
> layer.DeleteFeature(feature.GetFID()), but the .shp part of the shapefile is
> never updated.  (The dbf is the only file to change.)  Everything looks fine
> in OGR and ArcGIS, but if I run repair geometry in ArcGIS on the same file,
> it deletes the "same" records, causing the file to become completely
> unreadable.
> 
> I seem to recall reading about this before, but haven't turned up anything
> in google searches.  Is there a method to properly delete a record so the
> .shp is updated as well?
> 
> -Tom
> 
> 
> Tom,
> 
> The -skipfailures flag skips only failures to create new features. Null
> geometries in non-null shapetype shapefile are not handled.
> The only way I can think of to clean such a file is by checking the geometry
> in each feature.
> 
> On Thu, Aug 5, 2010 at 1:01 AM, Tom Jeffery <tjeffery at gmail.com> wrote:
> 
>> Chaitanya,
>>
>> I've found the issue with the particular shapefile I'm using.  It actually
>> has some null geometries in it, which are fixable using ESRI's "Repair
>> Geometry" tool.  I read that ogr2ogr is also suppose to remove records
>> with
>> empty geometries, but it doesn't seem to be working on my file, even with
>> the -skipfailures flag set.
>>
>> Any thoughts?  Or is there another good way to clean a shapefile that
>> might
>> have null geometries?
>>
>> Thanks so much for your help so far!
>>
>> -Tom

-- 
--------------------------------------------------------------------------------
Peter J Halls, GIS Advisor, University of York
Telephone: 01904 433806     Fax: 01904 433740
Snail mail: IT Services, University of York, Heslington, York YO10 5DD
This message has the status of a private and personal communication
--------------------------------------------------------------------------------


More information about the gdal-dev mailing list