Tengo un shapefile en la proyección de British National Grid:
Geometry: 3D Polygon
Feature Count: 5378
Extent: (9247.520209, 14785.170099) - (638149.173223, 1217788.569952)
Layer SRS WKT:
PROJCS["British_National_Grid",
GEOGCS["GCS_airy",
DATUM["OSGB_1936",
SPHEROID["Airy_1830",6377563.396,299.3249646]],
PRIMEM["Greenwich",0],
UNIT["Degree",0.017453292519943295]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",49],
PARAMETER["central_meridian",-2],
PARAMETER["scale_factor",0.9996012717],
PARAMETER["false_easting",400000],
PARAMETER["false_northing",-100000],
UNIT["Meter",1]]
cat: Integer (9.0)
¿Puedo usar GDAL / OGR para obtener el área total de todos los polígonos en el shapefile, en hectáreas?
Me pregunto si esto es posible con -sql
algo como:
ogrinfo -sql "SELECT SUM(ST_Area(geom::geography)) FROM mytable" myshapefile.shp
Pero tratando de conseguirlo ERROR 1: Undefined function 'ST_Area' used.
.
Supongo que podría importar el Shapefile a QGIS, agregar un atributo de área a cada polígono y luego sumarlo, pero preferiría usar una herramienta de línea de comando si es posible.
SUM_OGR_GEOM_AREA (Real) = 4459037129.50955
. ¿Está en hectáreas o en alguna otra unidad? ¿Y importa en qué proyección se encuentre mi archivo de forma fuente?Sí, es posible, pero debe usar el dialecto OGR SQLite de la siguiente manera:
Además, asegúrese de que
myshapefile
sea el nombre de la capa enmyshapefile.shp
. Puede hacer esto de la siguiente manera:fuente
no such column: geometry
. ¿Cómo averiguo cómo se llama la columna de geometría? Esta es la salida deogrinfo -al -fid 1
:OGRFeature(mylayer):1 cat (Integer) = 2 POLYGON ((463267.036276041297242 1216886.583904854720458 0,463267.693611663184129 1216956.525473011657596 0,463405.369117364054546 1216820.109560555079952 0,463404.712737055611797 1216750.1665881925728170,463267.036276041297242 1216886.583904854720458 0,463267.036276041297242 1216886.583904854720458 0))
.ogrinfo -so -al
Pero @dmci, que no entiendo un bit en su respuesta: para archivos de forma GDAL tener siempre una capa y su nombre es el nombre base del archivo de formas. ¿Cómo puede obtener el nombre "mytable" en lugar de "myshapefile"?Geometry Column = GEOMETRY
con ogrinfo -so -al pero el controlador shapefile no. Con shapefiles, supongo que el nombre es "OGR_GEOMETRY" para el dialecto SQL de OGR (ver campos especiales en gdal.org/ogr_sql.html ) y "geometría" para el dialecto SQLite.Con QGIS, puede ejecutar este código simple para imprimir el área total del archivo de forma (supongo que está evaluando el área en un sistema de referencia proyectado):
fuente