Sé que estás buscando una respuesta que utilice QGIS pero si estás dispuesto a utilizar el SIG de código abierto Herramientas de análisis geoespacial de caja blanca entonces aquí hay una respuesta completa que tomará cualquier shapefile, y creará un nuevo campo de atributo en su tabla que contiene el número de partes de características. Simplemente necesita abrir la ventana Scripter en Whitebox, cambiar el lenguaje de script a Groovy, y pegar el siguiente código:
import whitebox.geospatialfiles.ShapeFile
import whitebox.geospatialfiles.shapefile.*
import whitebox.geospatialfiles.shapefile.attributes.*
def inputFileName = "/MY_DIRECTORY/MY_FILE_NAME.shp"
def shape = new ShapeFile(inputFileName)
AttributeTable table = shape.getAttributeTable()
DBFField field = new DBFField()
field.setName("NUM_PARTS")
field.setDataType(DBFField.DBFDataType.NUMERIC)
field.setFieldLength(5)
field.setDecimalCount(0)
table.addField(field)
for (int i = 0; i < shape.getNumberOfRecords(); i++) {
ShapeFileRecord record = shape.getRecord(i)
int numParts = record.getGeometry().getParts().length
recData = table.getRecord(i)
recData[recData.length - 1] = new Double(numParts)
table.updateRecord(i, recData)
}
println("I'm done")
Tendrás que actualizar el valor de la variable inputFileName cerca de la parte superior para que apunte a tu archivo. También podrías usar Python para lograr lo mismo, pero yo escribí esto en Groovy. Si lo desea, también puedo tener la secuencia de comandos excluir partes del agujero si está trabajando con polígonos.
Este es un ejemplo de un mapa mundial de países que se ha renderizado para mostrar el número de partes que incluye la característica poligonal de cada país: