Eu tenho um shapefile na projeção da 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)
Posso usar GDAL / OGR para obter a área total de todos os polígonos no shapefile, em hectares?
Gostaria de saber se isso é possível com -sql
, algo como:
ogrinfo -sql "SELECT SUM(ST_Area(geom::geography)) FROM mytable" myshapefile.shp
Mas tentando isso eu entendo ERROR 1: Undefined function 'ST_Area' used.
.
Acho que poderia importar o Shapefile para o QGIS, adicionar um atributo de área a cada polígono e depois somar, mas prefiro usar uma ferramenta de linha de comando, se possível.
SUM_OGR_GEOM_AREA (Real) = 4459037129.50955
. Isso está em hectares ou em alguma outra unidade? E importa em que projeção está o meu shapefile de origem?Sim, é possível, mas você precisa usar o dialeto OGR SQLite da seguinte maneira:
Além disso, verifique se esse
myshapefile
é o nome da camadamyshapefile.shp
. Você pode fazer isso da seguinte maneira:fonte
no such column: geometry
. Como descubro como é chamada a coluna de geometria? Esta é a saídaogrinfo -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
But @dmci, eu não entendo nada na sua resposta: pois os shapefiles da GDAL sempre têm uma camada e seu nome é o nome base do shapefile. Como você pode obter o nome "mytable" em vez de "myshapefile"?Geometry Column = GEOMETRY
com o ogrinfo -so -al, mas o driver shapefile não. Com os shapefiles, suponho que o nome seja "OGR_GEOMETRY" para o dialeto OGR SQL (consulte os campos especiais em gdal.org/ogr_sql.html ) e "geometria" para o dialeto SQLite.Usando o QGIS, você pode executar este código simples para imprimir a área total do shapefile (suponho que você esteja avaliando a área em um sistema de referência projetado):
fonte