Schneller laden: Antworten vorwaermen, Gruppen auswaehlen
Der OAPIF-Provider fragt je Sammlung nacheinander Sammlung, Schema, Stil, OPTIONS und die erste Seite ab — bei 27 Sammlungen dauert das Anlegen 20,5 s (gemessen 08.09.2026, Berbisdorf). - ogc_layers.vorwaermen(): holt Landing, OpenAPI, Conformance, Sammlung, Schema und Stil vorab und gleichzeitig ueber Qts Ereignisschleife (unter 1,5 s fuer 84 Antworten). layer_hinzufuegen ruft es vor dem ersten Layer auf. Ergebnis 14,2 s statt 20,5 s, und die Zeit schwankt deutlich weniger. - Seitenleiste: drei Haken (Verfahren / Vorerhebung / Massnahmenblaetter) waehlen aus, was geladen wird. Nur Verfahren 11,1 s (21 Layer), nur Vorerhebung oder nur Massnahmenblaetter je 1,6 s (3 Layer). Bewusst NICHT parallel: ein in einem Python-Thread gebauter OAPIF-Layer laesst sich zwar in 0,9 s erzeugen, stuerzt aber beim ersten getFeatures() ab (Segfault, gemessen) — der Provider gehoert dem Thread, der ihn gebaut hat. tools/headless_panel_test.py prueft die neue Auswahl mit. metadata.txt 0.4.0. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
+21
-4
@@ -108,9 +108,21 @@ class VlnPanel(QDockWidget):
|
||||
kasten = QGroupBox("OGC API (empfohlen)")
|
||||
lage = QVBoxLayout(kasten)
|
||||
lage.setSpacing(6)
|
||||
self.ogc_knopf = QPushButton("Alle Layer laden")
|
||||
self.ogc_knopf.setToolTip("Verfahrenslayer, Vorerhebung und Maßnahmenblätter als "
|
||||
"editierbare OAPIF-Layer; QGIS schreibt Änderungen direkt zurück")
|
||||
# Jede Sammlung kostet beim Anlegen rund eine halbe Sekunde (der Provider fragt
|
||||
# Sammlung, Schema, Stil, OPTIONS und die erste Seite ab). Wer nur einen Teil braucht,
|
||||
# ist mit der Auswahl deutlich schneller: 27 Layer ~16 s, die Vorerhebung allein ~2 s.
|
||||
lage.addWidget(_klein(QLabel("Was geladen wird:")))
|
||||
self.gruppen_haken = {}
|
||||
for schluessel, beschriftung in (("Verfahren", "Verfahren (Umring, Plan 41, KAS …)"),
|
||||
("Vorerhebung", "Vorerhebung"),
|
||||
("Maßnahmenblätter", "Maßnahmenblätter")):
|
||||
haken = QCheckBox(beschriftung)
|
||||
haken.setChecked(True)
|
||||
lage.addWidget(haken)
|
||||
self.gruppen_haken[schluessel] = haken
|
||||
self.ogc_knopf = QPushButton("Layer laden")
|
||||
self.ogc_knopf.setToolTip("Die angehakten Sammlungen als editierbare OAPIF-Layer; "
|
||||
"QGIS schreibt Änderungen direkt zurück")
|
||||
self.ogc_knopf.clicked.connect(lambda: self._ruf("load_ogc"))
|
||||
self.stil_knopf = QPushButton("Stil des aktiven Layers speichern")
|
||||
self.stil_knopf.setToolTip("Braucht die Gruppe MODUL_KARTENSTIL (Verbandsmitarbeiter "
|
||||
@@ -160,7 +172,8 @@ class VlnPanel(QDockWidget):
|
||||
self.login_knopf.setVisible(not angemeldet)
|
||||
self.logout_knopf.setVisible(angemeldet)
|
||||
for widget in (self.filter_feld, self.combo, self.ogc_knopf, self.stil_knopf,
|
||||
self.vorlage_haken, self.upload_knopf, *self.datensatz_knoepfe):
|
||||
self.vorlage_haken, self.upload_knopf, *self.gruppen_haken.values(),
|
||||
*self.datensatz_knoepfe):
|
||||
widget.setEnabled(angemeldet)
|
||||
if not angemeldet:
|
||||
self._stumm = True
|
||||
@@ -190,6 +203,10 @@ class VlnPanel(QDockWidget):
|
||||
def als_vorlage(self):
|
||||
return self.vorlage_haken.isChecked()
|
||||
|
||||
def gewaehlte_gruppen(self):
|
||||
"""Namen der angehakten Layer-Gruppen (wie in ``ogc_layers.GRUPPEN``)."""
|
||||
return {name for name, haken in self.gruppen_haken.items() if haken.isChecked()}
|
||||
|
||||
def waehle_vkz(self, vkz):
|
||||
"""Setzt die Auswahl ohne Rückruf (Wiederherstellen aus der Projektdatei)."""
|
||||
self._stumm = True
|
||||
|
||||
Reference in New Issue
Block a user