[OSM-talk-nl] nationaalgeoregister WFS service query

nouwsfam nouwsfam at xs4all.nl
Wed Oct 16 22:36:45 UTC 2013



Ik ben er uit! Dank jullie allemaal hartelijk. Pff, het was wel een
taaie: ik miste een proxy op mijn thuisserver, dat was het eerste
probleem. Het tweede probleem waren de WFS query instellingen. Sommige
attributen zijn nauwelijks terug te vinden in documentatie (GML2 bv). Ik
heb er nu zoveel mogelijk uitgegooid (geom), en enkele noodzakelijke
toegevoegd (EPSG:900913), en nu werkt het. Zonder jullie hulp was ik er
nooit uitgekomen. 

Dit is nu de query: 

var gemeenteGrenzenLayer = new OpenLayers.Layer.Vector(
"Gemeentegrenzen", 
{
strategies: [new OpenLayers.Strategy.BBOX()],
styleMap : gemeenteGrenzenStyleMap, 
protocol: new OpenLayers.Protocol.WFS({
version: "1.1.0",
srsName: 'EPSG:900913',
url: "http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs",
featureType: "gemeenten_2012",
featureNS: "http://bestuurlijkegrenzen.geonovum.nl",
outputFormat: 'GML2'
})
}
); 

Hier staat het voorlopige resultaat:
http://83.163.82.100/ontwikkel/maps/rvz/test.html 

Door de proxy worden de gemeentegrenzen inderdaad wat traag geladen via
mijn thuislijntje. Maar het is altijd nog beter dan OSM data via de
Overpass Api (6MB voor alleen al de grenzen in Gelderland). 

Ik heb nog twee wensen: 

a) bepaalde gemeenten uitfilteren. Dat kan waarschijnlijk niet aan de
kant van de WFS server. Dus ik zal een filter in openlayers moeten
aanbrengen, nietwaar? 

b) de data gemeenten_2012 kan ik voor deze toepassing net zo goed lokaal
opslaan (xml) en lokaal laden. Op welke manier moet ik deze data dan
inlezen via OpenLayers? 

Gertjan Idema schreef op 2013-10-16 16:00: 

> Na wat puzzelen, heb ik het voor elkaar.
> In de bijlage een html bestand dat drie open layers lagen produceert:
> - Osm mapnik als achtergrond.
> - Gemeentegrenzen (van http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs) [7]
> - Woonplaatsgrenzen (van http://geodata.nationaalgeoregister.nl/bagviewer/wfs) [8]
> 
> Opvallend is, dat de bagviewer laag werkt zonder de outputFormat: 'GML2' toevoeging.
> 
> Verdere voorwaarde is wel dat je de proxy-host goed geconfigureerd hebt.
> Zie hiervoor: http://www.techrepublic.com/blog/diy-it-guy/diy-enable-cgi-on-your-apache-server/ [9]
> 
> Het proxy.cgi script vind je hier: http://trac.osgeo.org/openlayers/browser/trunk/openlayers/examples/proxy.cgi?format=txt [10]
> Dit script moet je een klein beetje aan passen, door op regel 18 bij allowedHosts 'geodata.nationaalgeoregister.nl' toe te voegen.
> Als je dat vergeet, krijg je een 'bad gateway' foutmelding.
> 
> Houdt er wel rekening dat het even kan duren voor de data geladen is. Met name de woonplaats grenzen.
> Ook vermoed ik, dat door het gebruik van de proxy-host, alle data via jouw server naar de client gaat. Als je een beperkt aantal GB per maand hebt bij je provider, kan dat dus consequenties hebben.
> 
> Groeten, Gertjan 
> 
> On Wed, 2013-10-16 at 12:08 +0200, Just van den Broecke wrote: 
> 
>> Ok, welkom in de wondere wereld van WFS en OGC-protocollen :-).
>> Het voordeel (boven een expliciete API zoals OSM XAPI) is dat je maar 1 
>> protocol spec (WFS) hoeft te kennen. Op grond van een URL zoals 
>> geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs moet je alle 
>> metadata (types etc) kunnen opvragen. Nadeel is dat WFS 
>> "onhandig"/verbose/redundant in elkaar zit. Meestal 2 stappen om uit te 
>> vinden welke parameters je nodig hebt:
>> 
>> GetCapabilities:
>> http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?service=WFS&request=GetCapabilities&version=1.1.0 [1]
>> DescribeFeatureType:
>> http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?service=WFS&request=DescribeFeatureType&version=1.1.0 [2]
>> 
>> Vooral uit de laatste haal je (onderaan) dat de laagnaam 
>> 'gemeenten_2012' en het geometrie-veld 'geom' moet zijn (bij jou stond 
>> 'geometrie').
>> 
>> Op grond daarvan heb ik net geprobeerd een OL laag toe te voegen in een 
>> viewer waar ik net aan werk (http://kadviewer.kademo.nl [3]) en zie dat dit 
>> werkt:
>> 
>> new OpenLayers.Layer.Vector("Bestuurlijke Grenzen - Gemeenten (WFS)", {
>> strategies: [new OpenLayers.Strategy.BBOX()],
>> visibility: false,
>> styleMap: new OpenLayers.StyleMap(
>> {'strokeColor': '#222222', 'fillColor': '#eeeeee', 
>> graphicZIndex: 1, fillOpacity: 0.6}),
>> protocol: new OpenLayers.Protocol.WFS({
>> version: '1.1.0',
>> outputFormat: 'GML2',
>> srsName: 'EPSG:28992',
>> url: 
>> http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs [4]?,
>> featureType: "gemeenten_2012",
>> featureNS: "http://bestuurlijkegrenzen.geonovum.nl [5]",
>> geometryName: 'geom'
>> })
>> })
>> 
>> Gotcha: er zit een al 2 jaar bekend probleem in PDOK (GeoServer) WFS bij 
>> gebruik van WFS 1.1.0: je krijgt standaard GML 3.1.1 output terug, maar 
>> daarin zitten 'null' namespaces. Dat weten ze daar ook al 2 jaar, maar 
>> heeft blijkbaar geen prio. Daarom als je outputFormat='GML2' opgeeft, 
>> gaat het goed. Je kunt ook version: 1.0.0 (default) opgeven dan krijg je 
>> standaard GML2 terug. Je kunt zelfs outputFormat=json of zelfs SHAPE-ZIP 
>> opvragen...Wie volgt dit nog ;-)?
>> 
>> Goed, ja ik ben deze dagen, vaak knarsetandend, met WFS bezig, dus 
>> "leuk" dit voorbij te zien komen. Overigens kan de 500 error goed met je 
>> proxy-instelling, nodig bij OpenLayers+WFS, te maken hebben...
>> 
>> groet!
>> 
>> Just
>> 
>> On 16-10-13 09:20, Christ van Willegen wrote:
>>> 2013/10/16 nouwsfam <nouwsfam at xs4all.nl>:
>>>> 
>>>> "NetworkError: 500 Internal Server Error -
>>>> http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs [4]"
>>>> 
>>>> en de foutmelding van de WFS server is nu
>>>> 
>>>> "Reload the page to get source for:
>>>> http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs [4]"
>>> 
>>> Dat is niet de foutmelding van de WFS server, maar FireBug toont daar
>>> deze tekst...
>>> 
>>> Die 'internal server error' is het probleem, maar dan krijg je ook,
>>> over het algemeen, _geen_ data terug...
>>> 
>>> Christ van Willegen
>>> 
> 
> _______________________________________________
> Talk-nl mailing list
> Talk-nl at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk-nl [6]



Links:
------
[1]
http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?service=WFS&request=GetCapabilities&version=1.1.0
[2]
http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?service=WFS&request=DescribeFeatureType&version=1.1.0
[3] http://kadviewer.kademo.nl
[4] http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs
[5] http://bestuurlijkegrenzen.geonovum.nl
[6] https://lists.openstreetmap.org/listinfo/talk-nl
[7] http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs)
[8] http://geodata.nationaalgeoregister.nl/bagviewer/wfs)
[9]
http://www.techrepublic.com/blog/diy-it-guy/diy-enable-cgi-on-your-apache-server/
[10]
http://trac.osgeo.org/openlayers/browser/trunk/openlayers/examples/proxy.cgi?format=txt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/talk-nl/attachments/20131017/3db86153/attachment.htm>


More information about the Talk-nl mailing list