Boundingbox berekenen voor PDOK Bebouwing laag (BAG)

Ik wil op een google maps v3 kaart een kaart laag voor bebouwing (objecten) toevoegen. https://geodata.nationaalgeoregister.nl/bag/wms?request=GetMap wil ik hiervoor gebruiken. (Overigens vind ik het lastig de juiste documentatie te vinden welke mogelijkheden de verschillende PDOK kaarten hebben)

Ik kwam deze laag tegen op https://kadastralekaart.com (Mooie applicatie!)
Hier zag ik een volgende url in de developer toolbar voorbij komen wat een mooi png terug geeft van bebouwing:

https://geodata.nationaalgeoregister.nl/bag/wms?&service=WMS&request=GetMap&layers=bag&styles=&format=image/png&transparent=true&version=1.3.0&width=512&height=512&crs=EPSG:3857&bbox=591125.7582434106,6749160.286496211,591163.9767575533,6749198.505010353

Enige wat ik nog moest doen is hier de bounding box berekenen en dan kan ik m toevoegen aan mijn eigen app. Resultaat hele andere bounding box waardes.

https://geodata.nationaalgeoregister.nl/bag/wms?request=GetMap&service=WMS&version=1.3.0&layers=bag&styles=&crs=EPSG:3857&bbox=5.310344696044922,51.717457573672206,5.310516357421875,51.717563924617345&width=256&height=256&format=image/png&transparent=true

bbox=591125.7582434106,6749160.286496211,591163.9767575533,6749198.505010353 (gevonden voorbeeld)
bbox=5.310344696044922,51.717457573672206,5.310516357421875,51.717563924617345 (mijn resultaat)

Iemand een idee wat ik verkeerd doe? Volgende code heb ik gemaakt:

const WMSLayerBebouwing = new google.maps.ImageMapType({
      getTileUrl: function (coord, zoom) {
        const proj = self.map.getProjection();
        const scale = Math.pow(2, zoom);

        // Get Long Lat coordinates
        const ne = proj.fromPointToLatLng(new google.maps.Point((coord.x + 1) * 256 / scale, coord.y * 256 / scale));
        const sw = proj.fromPointToLatLng(new google.maps.Point(coord.x * 256 / scale, (coord.y + 1) * 256 / scale));

        // Create the Bounding box
        const swLng = sw.lng();
        const swLat = sw.lat();
        const neLng = ne.lng();
        const neLat = ne.lat();
        const bbox = swLng + ',' + swLat + ',' + neLng + ',' + neLat; // bbox=xmin,ymin,xmax,ymax.

        let url = 'https://geodata.nationaalgeoregister.nl/bag/wms?';
          url += 'request=GetMap';
          url += '&service=WMS';
          url += '&version=1.3.0';
          url += '&layers=bag';
          url += '&styles=';
          url += '&crs=EPSG:3857';
          url += '&bbox=' + bbox;
          url += '&width=256';
          url += '&height=256';
          url += '&format=image/png';
          url += '&transparent=true';
          return url;
      },
      tileSize: new google.maps.Size(256, 256),
      opacity: 0.5
    });

    self.map.overlayMapTypes.push(WMSLayerBebouwing);

Hoi @MA_FBeks,

Volgens mij is dit wat je wil…
https://geodata.nationaalgeoregister.nl/bag/wms?request=GetMap&service=WMS&version=1.3.0&layers=bag&styles=&crs=EPSG:4326&bbox=51.717457573672206,5.310344696044922,51.717563924617345,5.310516357421875&width=256&height=256&format=image/png&transparent=true

bag-bag

Met het request wat jij probeert gebeurt het volgende:
Je probeert lat/lon (graden/degree) als parameter te gebruiken voor iets wat meters (m) wil. Wanneer je graden of meters als parameter moet gebruiken hangt af van de projectie die gebruikt wordt in het request. In dit geval EPSG:3857 wat dus meters verwacht.

Gezien jij werkt met graden (verschil is in dit geval te ‘herkennen’ aan de ‘zeer’ lage x,y waarden 5,31… & 51,71…) is het aannemelijk dat deze uit een projectie komen als EPSG:4326 (let ook op de volgorde lat/lon of lon/lat). De parameters voor het aanroepen van een WMS zijn dus met elkaar “verbonden” en staan dus niet los van elkaar.

Oja en deze service gaat 1 juli uit, de nieuwe service voor de BAG is:
https://geodata.nationaalgeoregister.nl/bag/wms/v1_1?request=getCapabilities&service=WMS

Hopelijk dat dit je iets verder de goede kant op helpt!

2 likes