I am using a spatialite db to perform a union and dissolve over a vector file.
The vector inside the db looks like this:
when I export the table with: ogr2ogr -f "ESRI Shapefile" -overwrite output.shp db.sqlite -dsco SPATIALITE=yes -sql "SELECT * FROM unidos" -nlt MULTIPOLYGON
the resulting shapefile has some of the holes filled, like in the next image
What can be wrong? I have checked the input file and it is OK. I mean, the holes are actually holes. And, why some holes remains, while others are filled if they are all created the same way.
This is the code I am using to generate the initial vector file: The input raster file is binary.
import os
from osgeo import ogr,gdal,osr
import time
strtime= time.time()
inputdir= "/home/queimadas/Dropbox/areaquemada/Code/JoinFeaturesSpatially/NEW2"
inputraster= "221_067_2015-01-24_QMENC_0.30_0.80.tif"
outshp= "outshp.shp"
ds= gdal.Open("%s/%s"%(inputdir,inputraster))
geoproj= ds.GetProjection()
Sdrv= ogr.GetDriverByName("ESRI Shapefile")
lyname= "%s/%s"%(inputdir,outshp)
shpfn= lyname
if os.path.exists(shpfn):
Sdrv.DeleteDataSource(shpfn)
dst_ds= Sdrv.CreateDataSource(shpfn)
srs= osr.SpatialReference(wkt= geoproj)
dst_layer= dst_ds.CreateLayer(lyname, srs)
fd= ogr.FieldDefn('DN', ogr.OFTInteger)
dst_layer.CreateField(fd)
gdal.Polygonize(ds.GetRasterBand(1), None, dst_layer, 0, [], callback= None)
def procfeat(feat):
if dst_layer.GetFeature(feat).GetFieldAsInteger('DN') == 0:
dst_layer.DeleteFeature(feat)
xs= xrange(dst_layer.GetFeatureCount())
map(procfeat, xs)
dst_ds.ExecuteSQL('REPACK %s'%dst_layer.GetName())
print "time: %.3f"%(time.time()-strtime)
Here's a WKT for a feature that it is OK in the input file.
POLYGON((244318.54237071701209061 8890674.63205884955823421,244288.54237071701209061 8890674.63205884955823421,244288.54237071701209061 8890704.63205884955823421,244198.54237071701209061 8890704.63205884955823421,244198.54237071701209061 8890734.63205884955823421,244168.54237071701209061 8890734.63205884955823421,244168.54237071701209061 8890764.63205884955823421,244198.54237071701209061 8890764.63205884955823421,244228.54237071701209061 8890764.63205884955823421,244228.54237071701209061 8890794.63205884955823421,244198.54237071701209061 8890794.63205884955823421,244198.54237071701209061 8890854.63205884955823421,244228.54237071701209061 8890854.63205884955823421,244258.54237071701209061 8890854.63205884955823421,244258.54237071701209061 8890884.63205884955823421,244288.54237071701209061 8890884.63205884955823421,244288.54237071701209061 8890854.63205884955823421,244318.54237071701209061 8890854.63205884955823421,244318.54237071701209061 8890824.63205884955823421,244378.54237071701209061 8890824.63205884955823421,244378.54237071701209061 8890854.63205884955823421,244408.54237071701209061 8890854.63205884955823421,244408.54237071701209061 8890884.63205884955823421,244438.54237071701209061 8890884.63205884955823421,244438.54237071701209061 8890854.63205884955823421,244528.54237071701209061 8890854.63205884955823421,244528.54237071701209061 8890884.63205884955823421,244558.54237071701209061 8890884.63205884955823421,244558.54237071701209061 8890914.63205884955823421,244588.54237071701209061 8890914.63205884955823421,244588.54237071701209061 8890884.63205884955823421,244648.54237071701209061 8890884.63205884955823421,244648.54237071701209061 8890914.63205884955823421,244738.54237071701209061 8890914.63205884955823421,244738.54237071701209061 8890884.63205884955823421,244858.54237071701209061 8890884.63205884955823421,244858.54237071701209061 8890854.63205884955823421,244888.54237071701209061 8890854.63205884955823421,244888.54237071701209061 8890824.63205884955823421,244918.54237071701209061 8890824.63205884955823421,244918.54237071701209061 8890764.63205884955823421,244888.54237071701209061 8890764.63205884955823421,244828.54237071701209061 8890764.63205884955823421,244828.54237071701209061 8890794.63205884955823421,244768.54237071701209061 8890794.63205884955823421,244768.54237071701209061 8890734.63205884955823421,244738.54237071701209061 8890734.63205884955823421,244738.54237071701209061 8890704.63205884955823421,244648.54237071701209061 8890704.63205884955823421,244648.54237071701209061 8890734.63205884955823421,244678.54237071701209061 8890734.63205884955823421,244678.54237071701209061 8890764.63205884955823421,244618.54237071701209061 8890764.63205884955823421,244618.54237071701209061 8890704.63205884955823421,244588.54237071701209061 8890704.63205884955823421,244588.54237071701209061 8890674.63205884955823421,244558.54237071701209061 8890674.63205884955823421,244468.54237071701209061 8890674.63205884955823421,244468.54237071701209061 8890644.63205884955823421,244438.54237071701209061 8890644.63205884955823421,244408.54237071701209061 8890644.63205884955823421,244408.54237071701209061 8890614.63205884955823421,244318.54237071701209061 8890614.63205884955823421,244318.54237071701209061 8890674.63205884955823421),(244318.54237071701209061 8890674.63205884955823421,244378.54237071701209061 8890674.63205884955823421,244378.54237071701209061 8890704.63205884955823421,244408.54237071701209061 8890704.63205884955823421,244408.54237071701209061 8890764.63205884955823421,244378.54237071701209061 8890764.63205884955823421,244378.54237071701209061 8890734.63205884955823421,244348.54237071701209061 8890734.63205884955823421,244348.54237071701209061 8890704.63205884955823421,244318.54237071701209061 8890704.63205884955823421,244318.54237071701209061 8890674.63205884955823421),(244468.54237071701209061 8890764.63205884955823421,244468.54237071701209061 8890704.63205884955823421,244528.54237071701209061 8890704.63205884955823421,244528.54237071701209061 8890764.63205884955823421,244468.54237071701209061 8890764.63205884955823421))
After importing into the spatialite db, union and exporting again the WKT is as follows.
POLYGON((244318.54237071701209061 8890674.63205884955823421,244288.54237071701209061 8890674.63205884955823421,244288.54237071701209061 8890704.63205884955823421,244198.54237071701209061 8890704.63205884955823421,244198.54237071701209061 8890734.63205884955823421,244168.54237071701209061 8890734.63205884955823421,244168.54237071701209061 8890764.63205884955823421,244198.54237071701209061 8890764.63205884955823421,244228.54237071701209061 8890764.63205884955823421,244228.54237071701209061 8890794.63205884955823421,244198.54237071701209061 8890794.63205884955823421,244198.54237071701209061 8890854.63205884955823421,244228.54237071701209061 8890854.63205884955823421,244258.54237071701209061 8890854.63205884955823421,244258.54237071701209061 8890884.63205884955823421,244288.54237071701209061 8890884.63205884955823421,244288.54237071701209061 8890854.63205884955823421,244318.54237071701209061 8890854.63205884955823421,244318.54237071701209061 8890824.63205884955823421,244378.54237071701209061 8890824.63205884955823421,244378.54237071701209061 8890854.63205884955823421,244408.54237071701209061 8890854.63205884955823421,244408.54237071701209061 8890884.63205884955823421,244438.54237071701209061 8890884.63205884955823421,244438.54237071701209061 8890854.63205884955823421,244528.54237071701209061 8890854.63205884955823421,244528.54237071701209061 8890884.63205884955823421,244558.54237071701209061 8890884.63205884955823421,244558.54237071701209061 8890914.63205884955823421,244588.54237071701209061 8890914.63205884955823421,244588.54237071701209061 8890884.63205884955823421,244648.54237071701209061 8890884.63205884955823421,244648.54237071701209061 8890914.63205884955823421,244738.54237071701209061 8890914.63205884955823421,244738.54237071701209061 8890884.63205884955823421,244858.54237071701209061 8890884.63205884955823421,244858.54237071701209061 8890854.63205884955823421,244888.54237071701209061 8890854.63205884955823421,244888.54237071701209061 8890824.63205884955823421,244918.54237071701209061 8890824.63205884955823421,244918.54237071701209061 8890764.63205884955823421,244888.54237071701209061 8890764.63205884955823421,244828.54237071701209061 8890764.63205884955823421,244828.54237071701209061 8890794.63205884955823421,244768.54237071701209061 8890794.63205884955823421,244768.54237071701209061 8890734.63205884955823421,244738.54237071701209061 8890734.63205884955823421,244738.54237071701209061 8890704.63205884955823421,244648.54237071701209061 8890704.63205884955823421,244648.54237071701209061 8890734.63205884955823421,244678.54237071701209061 8890734.63205884955823421,244678.54237071701209061 8890764.63205884955823421,244618.54237071701209061 8890764.63205884955823421,244618.54237071701209061 8890704.63205884955823421,244588.54237071701209061 8890704.63205884955823421,244588.54237071701209061 8890674.63205884955823421,244558.54237071701209061 8890674.63205884955823421,244468.54237071701209061 8890674.63205884955823421,244468.54237071701209061 8890644.63205884955823421,244438.54237071701209061 8890644.63205884955823421,244408.54237071701209061 8890644.63205884955823421,244408.54237071701209061 8890614.63205884955823421,244318.54237071701209061 8890614.63205884955823421,244318.54237071701209061 8890674.63205884955823421),(244318.54237071701209061 8890674.63205884955823421,244378.54237071701209061 8890674.63205884955823421,244378.54237071701209061 8890704.63205884955823421,244408.54237071701209061 8890704.63205884955823421,244408.54237071701209061 8890764.63205884955823421,244378.54237071701209061 8890764.63205884955823421,244378.54237071701209061 8890734.63205884955823421,244348.54237071701209061 8890734.63205884955823421,244348.54237071701209061 8890704.63205884955823421,244318.54237071701209061 8890704.63205884955823421,244318.54237071701209061 8890674.63205884955823421))
With another feature on top (where the hole was)
POLYGON((244468.54237071701209061 8890764.63205884955823421,244528.54237071701209061 8890764.63205884955823421,244528.54237071701209061 8890704.63205884955823421,244468.54237071701209061 8890704.63205884955823421,244468.54237071701209061 8890764.63205884955823421))