J'ai un fichier de formes dans la projection 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)
Puis-je utiliser GDAL / OGR pour obtenir la superficie totale de tous les polygones du fichier de formes, en hectares?
Je me demande si c'est possible avec -sql
quelque chose comme:
ogrinfo -sql "SELECT SUM(ST_Area(geom::geography)) FROM mytable" myshapefile.shp
Mais j'essaye ERROR 1: Undefined function 'ST_Area' used.
.
Je suppose que je pourrais importer le Shapefile dans QGIS, ajouter un attribut de zone à chaque polygone, puis le résumer, mais je préférerais de loin utiliser un outil de ligne de commande si possible.
SUM_OGR_GEOM_AREA (Real) = 4459037129.50955
. Est-ce en hectares ou dans une autre unité? Et quelle importance a la projection de mon fichier de formes source?Oui, c'est possible, mais vous devez utiliser le dialecte OGR SQLite comme suit:
Assurez-vous également qu'il
myshapefile
s'agit du nom de la couchemyshapefile.shp
. Vous pouvez le faire comme suit:la source
no such column: geometry
. Comment savoir comment s'appelle la colonne de géométrie? Ceci est la sortie 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
faites pas @dmci, je ne comprends pas un bit dans votre réponse: pour les fichiers de formes GDAL ont toujours une couche et son nom est le nom de base du fichier de formes. Comment obtenir le nom "mytable" au lieu de "myshapefile"?Geometry Column = GEOMETRY
avec ogrinfo -so -al mais pas le pilote shapefile. Avec les fichiers de formes, je suppose que le nom est "OGR_GEOMETRY" pour le dialecte SQL OGR (voir les champs spéciaux dans gdal.org/ogr_sql.html ) et "geometry" pour le dialecte SQLite.En utilisant QGIS, vous pouvez exécuter ce code simple pour imprimer la zone totale du fichier de formes (je suppose que vous évaluez la zone dans un système de référence projeté):
la source