QGIS: meerdere features te selecteren na zoomen, bug?

Beste collega’s,

Ik loop tegen vreemd gedrag aan van QGIS. Ik weet alleen niet precies of het aan QGIS of PDOK ligt, maar ik vermoed QGIS. Vandaar even de vraag op dit forum.

Wanneer ik de WFS-laag cbs_buurten_2019 toevoeg en ik selecteer daarna enkele features telt QGIS netjes het juiste aantal features. In dit geval 8:

2020-12-23 16_22_50-

Wanneer ik dan in- of uitzoom en ik nogmaals dezelfde features selecteer telt QGIS ineens een heel ander aantal. In dit geval heb ik 1x uitgezoomd en de features nogmaals geselecteerd, waarna QGIS ineens komt met 18 features:

2020-12-23 16_23_27

Wat gaat hier mis? Ook het deselecteren van features en weer opnieuw selecteren heeft geen zin. In de attributentabel komt één feature meerdere keren voor. Het probleem is dat er op deze manier geen analyses en/of exports van gemaakt kunnen worden.

Ik loop er in QGIS 3.4.15 en 3.10.12 tegenaan, evenals een andere collega op een andere pc.

Alvast dank voor de eventuele hulp en prettige feestdagen gewenst.

Roy van den Heuvel

Als je een object selecteert dan heb je rechts onderin een optie hoe je selecteert. Als je kiest voor iets als ‘van boven en stoppen bij eerste’, werkt het dan beter?

Hi Anton,

Dank voor je reactie. Ik kan de optie die je noemt eerlijk gezegd niet vinden. Wellicht dat die optie niet standaard wordt weergegeven.

Ik heb nog even met een andere WFS-laag gekeken: cbs_buurt_2019_niet_gegeneraliseerd. Die laag vertoont niet dit vreemde gedrag. Dat wil zeggen: selecteren van buurten ná het in- of uitzoomen geeft het juiste aantal features terug (en ook géén kopieën in de attributentabel).

Kortom, het is toch wel een laag-specifiek probleem lijkt me. Zou het iets met id’s/primairy keys kunnen zijn?

Misschien komen de features toch dubbel voor. Als ik objecten selecteer (dus niet identificeer) met de functie “Selecteren door er overheen te tekenen” krijg ik ook twee objecten als ik over één vlak ga, hetzelfde vlak dat bij identificeren ook 2x wordt getoond.

Je zou met de rechter muisknop één vlak kunnen identificeren. Hier wordt dat uitgelegd:

Ik vermoed dat het selecteren goed gaat maar dat er iets fout gaat in de WFS-laag. Wanneer je een WFS-laag laadt haalt QGIS alleen de data op voor het gebied van je kaartvenster. Wanneer je verschuift of in- of uitzoomt gebeurt dat weer opnieuw. QGIS moet dan alle dubbele wegfilteren maar dat ging/gaat soms niet goed. In het geheugen komen dezelfde objecten dan meerdere keren voor.
Die objecten worden allemaal geselecteerd maar dat zie je niet, behalve in de aantallen geselecteerde objecten.

Je kunt het checken door:

  • In de attributentabel de recordes te bekijken
  • De vulkleur van je polygonen transparanter te maken. De dubbele worden dan donkerder weergegeven.

Vanwege bovengenoemd gedrag, en vanwege soms onvoorspelbaar gedrag van WFS-servers, gebruik ik WFS nooit alsof het een soort lokale vector-kaartlaag (zoals shp of gpkg) is. Ik sla de WFS data liever direct op in een lokale dataset.

Dank voor de reacties.

@Anton, ik heb je suggestie geprobeerd. QGIS vertoont dan inderdaad vreemd gedrag zoals @raymondnijssen al aangeeft. Zie hieronder:

Media1

Je verwacht zoiets als onderstaande:

Media2

Kortom, het ligt dus aan de WFS-laag. Ik vermoed door het ontbreken van een uniek id op de records, waardoor ze na het in/uitzoomen dubbel in het geheugen komen.

Dat zou het idd kunnen zijn. Ik zal er nog eens een keer naar kijken, altijd handig om te weten voordat je blindelings wat rapportjes uitdraait :slight_smile:

Nog even terugkomend op dit probleem. Ik kom het nu weer tegen bij het maken van een kaartlaag.

Wanneer je geen primary key definieert genereert -in dit geval- GeoServer zelf zijn eigen id’s. Aangezien dat bij ieder request opnieuw gebeurt, komt er bij iedere response dezelfde data terug maar met andere id’s. Aangezien QGIS geen houvast heeft om de dubbele eruit te halen zie je dat de data zich begint op te stapelen. Wanneer de id’s wél gelijk blijven (dus van tevoren gedefinieerd in de database) gaat het wel goed.

De oplossing is dus óf vaste id’s óf dat QGIS de data van de vorige requests verwijdert.

1 like

Dank voor de verduidelijking! Volgens mij kan QGIS hiermee overweg in recentere versies, door te filteren op het primary key veld. Dat is best complex, en gebeurt deels ook in de onderliggende GDAL software.

Daarom nogmaals, bij analyses beter eerst de data van het gewenste gebied downloaden en lokaal opslaan en checken op doublures voordat je verder gaat.

1 like