Geographic Information Systems Asked by Yves Rivard on November 14, 2021
I am a bit of a GIS beginner here.
I’ve got an image mask in .jpg format that I’m trying to convert to a shapefile .shp format. To do so, I use the GDAL polygonize
function.
This is what the input mask looks like:
I then use the following code to polygonize the image
sourceRaster = gdal.Open('./storage/processed/71ee8db7-d2b0-45e6-a232-e218d6977266/result.jpg')
band = sourceRaster.GetRasterBand(1)
bandArray = band.ReadAsArray()
outShapefile = "polygonized"
driver = ogr.GetDriverByName("ESRI Shapefile")
outDatasource = driver.CreateDataSource(outShapefile+ ".shp")
outLayer = outDatasource.CreateLayer("polygonized", srs=None)
newField = ogr.FieldDefn('MYFLD', ogr.OFTInteger)
outLayer.CreateField(newField)
gdal.Polygonize(band, None, outLayer, 0, [], callback=None )
outDatasource.Destroy()
sourceRaster = None
The output of the above code is the following:
As you may notice there are 2 problems that I see with the resulting shapefile:
Would anyone have pointers on how the above issues could be resolved or improved?
Don't know about the flipping, but I wonder if your (lossy) jpeg has artefacts which are visually imperceptible but decode into different values in the source raster, that then generate distinct polygons.
I would
Try to make the source raster a tiff or png or some other nonlossy format (not by converting it back now, since the artefacts, if any, will be kept; rather by saving it in a nonlossy format wherever it came from so the artefacts are not introduced.)
In an interactive tool like QGIS plot a histogram of the input raster to see if there is anything else than 0s and 1s
Examine the features in the output to figure out if the "speckles" are additional polygons with slightly different values of the DN
field (which is the value read from the input raster).
Answered by Houska on November 14, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP