I needed a quick way to get the total vertex count in a shapefile. The ogrinfo
command includes vertex count in its output. This command:
$ ogrinfo -dialect SQLite -sql "SELECT sum(ST_NPoints(geometry)) AS vertex_count FROM OK_second_congressional_district" OK_second_congressional_district.shp
yields:
INFO: Open of `OK_second_congressional_district.shp'
using driver `ESRI Shapefile' successful.
Layer name: SELECT
Geometry: None
Feature Count: 1
Layer SRS WKT:
(unknown)
vertex_count: Integer (0.0)
OGRFeature(SELECT):0
vertex_count (Integer) = 203
But that is a lot to type (and remember).
Since the only thing that changes between running commands is the name of a shapefile, it's easy to call this from a shell script:
#!/usr/bin/env bash
printf "\nLayer: $1\n"
ogrinfo -dialect SQLite -sql "SELECT sum(ST_NPoints(geometry)) AS vertex_count FROM $1" $1.shp | grep "vertex_count (Integer) ="
printf "\n"
Using $1
says take the second argument (in our case, the name of a layer / shapefile) and use that in the ogrinfo
command.
To use this script, save it as file as somewhere (I called it vc), make it executable, copy it to a directory in $PATH
, and now it's much easier to get that count I wanted:
$ vc OK_second_congressional_district
Layer: OK_second_congressional_district
vertex_count (Integer) = 203