Saya memiliki shapefile dalam proyeksi 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)
Bisakah saya menggunakan GDAL / OGR untuk mendapatkan luas total semua poligon di shapefile, dalam hektar?
Saya ingin tahu apakah ini mungkin terjadi -sql
, seperti:
ogrinfo -sql "SELECT SUM(ST_Area(geom::geography)) FROM mytable" myshapefile.shp
Tetapi mencoba itu saya dapatkan ERROR 1: Undefined function 'ST_Area' used.
.
Saya kira saya bisa mengimpor Shapefile ke QGIS, menambahkan atribut area ke setiap poligon, dan kemudian menjumlahkannya, tetapi saya lebih suka menggunakan alat baris perintah jika memungkinkan.
SUM_OGR_GEOM_AREA (Real) = 4459037129.50955
. Apakah ini dalam hektar atau unit lain? Dan apakah penting proyeksi apa yang ada di formfile sumber saya?Ya, itu mungkin, tetapi Anda perlu menggunakan dialek OGR SQLite sebagai berikut:
Juga, pastikan itu
myshapefile
adalah nama layer dimyshapefile.shp
. Anda dapat melakukan ini sebagai berikut:sumber
no such column: geometry
. Bagaimana cara mengetahui apa yang disebut kolom geometri? Ini adalah output dariogrinfo -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, saya tidak mengerti sedikit pun dalam jawaban Anda: untuk GDAL shapefile selalu memiliki satu layer dan namanya adalah nama dasar dari shapefile. Bagaimana Anda bisa mendapatkan nama "mytable" daripada "myshapefile"?Geometry Column = GEOMETRY
dengan ogrinfo -jadi -al tetapi driver shapefile tidak. Dengan shapefile saya kira namanya adalah "OGR_GEOMETRY" untuk dialek OGR SQL (lihat bidang khusus di gdal.org/ogr_sql.html ) dan "geometri" untuk dialek SQLite.Dengan menggunakan QGIS, Anda dapat menjalankan kode sederhana ini untuk mencetak total area shapefile (saya berasumsi Anda sedang mengevaluasi area dalam sistem referensi yang diproyeksikan):
sumber