Die Verwaltungsgrenzen liegen beim BEV als GeoPackage vor. Es handelt sich also um eine sqlite-Datenbank. Der Zugriff mit QGIS, speziell die Filterung nach Attributen, stellt bisweilen eine Geduldsprobe dar. Eine Inspektion der .gpkg-Datei mit dem DB Browser for SQLite zeigt, dass es jenseits der Primärschlüssel keinen Index in der Datenbank gibt.
Mit taktisch günstig gewählten Indizes kann die Geschwindigkeit beim Zugriff deutlich erhöht werden.
AU_flat_view
Um den Umriss einer einzelnen Gemeinde zu erhalten ist es notwendig im AU_flat_view nach “nationalLevelName” sowie “text” zu filtern. Der View ist wie folgt definiert:
CREATE VIEW "AU_flat_view" AS
SELECT
AU_AdministrativeUnit.geom,
AU_AdministrativeUnit.inspireId,
AU_Attribute.country,
AU_Attribute.nationalCode,
AU_Attribute.nationalLevel,
AU_Attribute.beginLifespanVersion,
AU_Attribute.nationalLevelName,
AU_Attribute.residenceOfAuthority,
AU_Attribute.upperLevelUnit,
AU_Name.text,
AU_Name.script,
AU_Name.language,
AU_Name.nativeness,
AU_Name.nameStatus,
AU_Name.sourceOfName
FROM
AU_AdministrativeUnit
INNER JOIN AU_Attribute ON AU_AdministrativeUnit.inspireId = AU_Attribute.inspireId
INNER JOIN AU_Name ON AU_AdministrativeUnit.inspireId = AU_Name.inspireId
Für die im JOIN-Statement verwendeten Attribute ist auch kein Index definiert. Es gilt also einen Index zu definieren für:
- AU_AdministrativeUnit.inspireId
- AU_Attribute.inspireId
- AU_Name.inspireId
- AU_Attribute.nationalLevel
- AU_Name.text
CREATE INDEX "index_AU_AdministrativeUnit_inspireId" ON "AU_AdministrativeUnit" (
"inspireId"
);
CREATE INDEX "index_AU_Attribute_inspireId" ON "AB_Attribute" (
"inspireId"
);
CREATE INDEX "index_AU_Name_inspireId" ON "AU_Name" (
"inspireId"
);
CREATE INDEX "index_AU_Attribute_nationalLevel" ON "AU_Attribute" (
"nationalLevel"
);
CREATE INDEX "index_AU_Name_text" ON "AU_Name" (
"text"
);