Aantal resultaten BBOX in BAG klopt niet

om een voorbeeld te vinden welke mijn probleem hopelijk voldoende vangt: ik ben Maastricht kwijt!

ik doe dit verzoek:
https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?service=WFS&request=GetFeature&version=2.0.0&typename=bag:verblijfsobject&srsName=EPSG:4326&outputFormat=json&sortBy=bag:woonplaats+A&count=1000&bbox=5.4310216300389,50.831818001343,5.91762245052714,51.4441313792053,CRS841

Conform “wikipedia” zit Maastricht in deze bbox en verwachtte ik:

Maastricht in het resultaat te zien
1000 resultaten te krijgen (en zou ik Maastricht op pagina X verwachten)
Ik krijg geen van beide? (Geen Maastricht en 803 resultaten)

PS: het is mij volkomen helder dat dit niet de manier is om “Maastricht te vinden” , het gaat om het voorbeeld

@antonbakker merkte op dat sortBy=bag:woonplaats+D (aflopend sorteren) 922 resultaten oplevert en niet sorteren wel alles!

Dit laatste is voor mij voldoende om het probleem voldoende te fixen, maar een correct antwoord is natuurlijk altijd beter :wink:

1 like

Beste @antonbakker ook het ongesorteerde aantal klopt niet, een (test)voorbeeld:

https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?service=WFS&request=GetFeature&version=2.0.0&typename=bag:verblijfsobject&srsName=EPSG:4326&outputFormat=json&count=1000&bbox=3.43497621514635,51.5113514107071,3.48904297297837,51.5793862304696,CRS84

numberMatched: 910

een deel van deze bbox (1/9):

https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?service=WFS&request=GetFeature&version=2.0.0&typename=bag:verblijfsobject&srsName=EPSG:4326&outputFormat=json&count=1000&bbox=3.43497621514635,51.5113514107071,3.45303444031712,51.5340749499757,CRS84

numberMatched: 999

1 like

Het is heel lastig een indruk te hebben wat de oorzaak is, ik vermoed dat het voornamelijk los staat van het resulterende aantal. Gevoelsmatig lijkt een hoger aantal (900+) wel meer kans op meer onderliggende data te hebben, maar ik kwam zelfs eentje tegen met als resultaat 265, waar met garantie duizenden in behoren te vallen.

Aan de andere kant zag ik ook “checks” bij bbox-950-aantallen waarbij een sum van de delen wel netjes hetzelfde aantal gaven.

Mochten er meer voorbeelden gewenst zijn, graag even reactie/contact.

Bedankt voor het controleren, we gaan er naar kijken!

1 like

Beste @antonbakker, is er nieuws op dit front (ik kom de fout namelijk nog regelmatig tegen…)

Nog niet, maar er wordt aan gewerkt. Als we nieuws hebben laten we het hier weten.

1 like

Hoi @eesger, het was ff wat uitzoek werk en we dachten dat het eerst gerelateerd was aan een ander issue vandaar de vertraging.

Maar om hier een correct antwoord op te geven:

  • Het request wat je doet op de BAG heeft een aantal parameters m.b.t. WGS84 zoals de srsName, en de projectie van de BBOX. (Welk goed om op te merken is de “gedraaide” lat/lon <> lon/lat tussen EPSG:4326 en CRS84)
  • Ook belangrijk om te weten is dat de BAG is opgelagen met de geometrien in EPSG:28992 (Rijksdriehoekscoördinaten)
  • Dit betekent dat de door jouw opgegeven parameters vertaald moeten worden naar EPSG:28992
  • Dit gebeurd ook “netjes” in dit geval:
    POLYGON((158046.589744294 315774.249984155,158046.589744294 384027.407047202,192370.471926689 384027.407047202,192370.471926689 315774.249984155,158046.589744294 315774.249984155))
  • deze wordt dan ook gebruikt in de query op de backend en hier komt ook dan een resultset uit met 1000 features/objecten
  • Maar nu komt het …
  • Deze data moet nu van de originele projectie EPSG:28992 geprojecteerd worden naar EPSG:4326
  • Wanneer dit is gedaan wordt er gecontroleerd of te teruggegeven features uit de database nog liggen in de opgegeven BBOX (in EPSG:4326)
  • en dat is dus niet meer het geval…
  • wanneer men gaat (her)projecteren ontstaan d’r afwijkingen, deze zijn afhankelijk of men met een platte (als een kaart) projectie zoals EPSG:28992 werkt of met een bolle (als een voetbal) projectie zoals EPSG:4326
  • in dit specifieke geval vallen er dus 156 features weg, omdat deze dus niet meer in de originele/opgeven BBOX vallen.
  • En dit gebeurt dus toevallig dat Amstenrade (door de sortby) op de grens ligt van de opgeven BBOX. Mocht Amstenrade in het midden hebben gelegen dan had dit issue niet gespeeld.

De vraag is dus ook of het uberhaupt een fout is… gezien de stappen die plaats vinden allemaal te verklaren zijn.

De vervolg vraag is dan hoe hier dan mee om te gaan. Je zou een aantal dingen kunnen doen:

  1. De data op te vragen in EPSG:28992 (de bron projectie)
    Een belangrijke opmerking die zo ie zo te maken is, is dat de data van de BAG je die nu gebruikt in EPSG:4326 verre van “correct” is. Dit is prima zolang het voornamelijk gebruikt wordt voor globale visualisatie of iets dergelijks.
  2. In plaats van een BBOX een “echte” polygoon mee te sturen zodat de punten linksboven/rechtsonder “recht getrokken” worden.
  3. Kleinere BBOX te gebruiken
<?xml version="1.0" encoding="utf-8"?>
<GetFeature xmlns="http://www.opengis.net/wfs/2.0"
            xmlns:gml="http://www.opengis.net/gml/3.2"
            service="WFS"
            version="2.0.0"
            outputformat="application/json"
            startindex="0"
            count="1000"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://schemas.opengis.net/wfs/2.0/wfs.xsd">
	<Query typeNames="verblijfsobject"
	       xmlns:bag="http://bag.geonovum.nl"
		   srsName="EPSG:4326">
		<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0">
			<fes:Intersects>
				<fes:ValueReference>geom</fes:ValueReference>
				<gml:Polygon xmlns:gml="http://www.opengis.net/gml/3.2"
				             srsName="CRS:84">
					<gml:exterior>
						<gml:LinearRing>
							<gml:posList srsDimension="2">5.4310216300389 50.831818001343, 5.91762245052714 50.831818001343,5.91762245052714 51.4441313792053, 5.4310216300389 51.4441313792053, 5.4310216300389 50.831818001343</gml:posList>
						</gml:LinearRing>
					</gml:exterior>
				</gml:Polygon>
			</fes:Intersects>
		</fes:Filter>
		<fes:SortBy xmlns:fes="http://www.opengis.net/fes/2.0">
			<fes:SortProperty>
				<fes:PropertyName>woonplaats</fes:PropertyName>
				<fes:SortOrder>ASC</fes:SortOrder>
			</fes:SortProperty>
		</fes:SortBy>
	</Query>
</GetFeature>
2 likes

Dank voor je uitgebreide antwoord, wordt zeer gewaardeerd. Voor ik reageer laat ik 'm even op me inwerken (sterker nog, eerst nog een weekje vakantie :wink: )

1 like