3

I've been going through a fairly lengthy process of polygonizing very intricate raster images, then creating a new layer with the extra area attribute, so that I can then remove the millions of tiny dots that turn what should be a 5 megabyte shapefile into a 40 megabyte one.

When I run the Raster|Conversion|Polygonize with qgis, it shows the gdal script that is run in the command line to complete the task. I don't know many gdal commands other than ogr2ogr stuff, so was wondering if any of you gdal pro's out there knew how to add an area attribute to the outputted shapefile (populated with calculated areas) without a second step by adding something to this script:

gdal_polygonize.py "/Users/douglas/Desktop/polygonized_rasters/zones.tif"

I've clicked a couple of options in this polygonize menu and saw code added to the script, so that gave me the idea that there might be some code I could add to this line to add that area column during the same process. Maybe not, I'm not sure.

1 Answer 1

6

As far as I know, it's not possible in the same step, without adapting the code of gdal_polygonize.py for this purpose. However, we can do with a bit of OGR SQL. For instance:

ogr2ogr output.shp input.shp -sql "SELECT *, OGR_GEOM_AREA AS area FROM input"

creates a new shapefile containing all fields of the input one, plus an area field.

3
  • Following your suggestion I get the message "ERROR 1: SELECT from table input failed, no such table/featureclass." gdal version 1.9 -- is not OGR_GEOM_AREA contained from gdal_polygonize? Any advice?
    – Max
    Commented Mar 4, 2014 at 12:01
  • Substitute input in the SQL statement with your input layer name (without the extension). Hope this helps. Commented Mar 4, 2014 at 14:02
  • thanks, of course, that was my mistake! "input" is the layer name of "input.shp" -- now it works
    – Max
    Commented Mar 5, 2014 at 5:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.