<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html><body>
<p>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.</p>
<p>Dit is nu de query:</p>
<p>var gemeenteGrenzenLayer = new OpenLayers.Layer.Vector(<br /> "Gemeentegrenzen", <br /> {<br /> strategies: [new OpenLayers.Strategy.BBOX()],<br /> styleMap : gemeenteGrenzenStyleMap, <br /> protocol: new OpenLayers.Protocol.WFS({<br /> version: "1.1.0",<br /> srsName: 'EPSG:900913',<br /> url: "http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs",<br /> featureType: "gemeenten_2012",<br /> featureNS: "http://bestuurlijkegrenzen.geonovum.nl",<br /> outputFormat: 'GML2'<br /> })<br /> }<br /> );</p>
<p>Hier staat het voorlopige resultaat: http://83.163.82.100/ontwikkel/maps/rvz/test.html</p>
<p>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). </p>
<p>Ik heb nog twee wensen:</p>
<p>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?</p>
<p>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? </p>
<p> </p>
<p> </p>
<p>Gertjan Idema schreef op 2013-10-16 16:00:</p>
<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px"><!-- html ignored --><!-- head ignored --><!-- meta ignored --><!-- meta ignored -->Na wat puzzelen, heb ik het voor elkaar.<br /> In de bijlage een html bestand dat drie open layers lagen produceert:<br /> - Osm mapnik als achtergrond.<br /> - Gemeentegrenzen (van <a href="http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs)">http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs)</a><br /> - Woonplaatsgrenzen (van <a href="http://geodata.nationaalgeoregister.nl/bagviewer/wfs)">http://geodata.nationaalgeoregister.nl/bagviewer/wfs)</a><br /><br /> Opvallend is, dat de bagviewer laag werkt zonder de outputFormat: 'GML2' toevoeging.<br /><br /> Verdere voorwaarde is wel dat je de proxy-host goed geconfigureerd hebt.<br /> Zie hiervoor: <a href="http://www.techrepublic.com/blog/diy-it-guy/diy-enable-cgi-on-your-apache-server/">http://www.techrepublic.com/blog/diy-it-guy/diy-enable-cgi-on-your-apache-server/</a><br /><br /> Het proxy.cgi script vind je hier: <a href="http://trac.osgeo.org/openlayers/browser/trunk/openlayers/examples/proxy.cgi?format=txt">http://trac.osgeo.org/openlayers/browser/trunk/openlayers/examples/proxy.cgi?format=txt</a><br /> Dit script moet je een klein beetje aan passen, door op regel 18 bij allowedHosts 'geodata.nationaalgeoregister.nl' toe te voegen.<br /> Als je dat vergeet, krijg je een 'bad gateway' foutmelding.<br /><br /> Houdt er wel rekening dat het even kan duren voor de data geladen is. Met name de woonplaats grenzen.<br /> 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.<br /><br /> Groeten, Gertjan <br /><br /><br />On Wed, 2013-10-16 at 12:08 +0200, Just van den Broecke wrote:
<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px">
<pre>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:
<a href="http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?service=WFS&request=GetCapabilities&version=1.1.0">http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?service=WFS&request=GetCapabilities&version=1.1.0</a>
DescribeFeatureType:
<a href="http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?service=WFS&request=DescribeFeatureType&version=1.1.0">http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?service=WFS&request=DescribeFeatureType&version=1.1.0</a>
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 (<a href="http://kadviewer.kademo.nl">http://kadviewer.kademo.nl</a>) 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:
<a href="http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs">http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs</a>?,
featureType: "gemeenten_2012",
featureNS: "<a href="http://bestuurlijkegrenzen.geonovum.nl">http://bestuurlijkegrenzen.geonovum.nl</a>",
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 <<a href="mailto:nouwsfam@xs4all.nl">nouwsfam@xs4all.nl</a>>:
>>
>> "NetworkError: 500 Internal Server Error -
>> <a href="http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs">http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs</a>"
>>
>> en de foutmelding van de WFS server is nu
>>
>> "Reload the page to get source for:
>> <a href="http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs">http://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs</a>"
>
> 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
>
</pre>
</blockquote>
<br /><!-- html ignored --><br />
<pre>_______________________________________________
Talk-nl mailing list
<a href="mailto:Talk-nl@openstreetmap.org">Talk-nl@openstreetmap.org</a>
<a href="https://lists.openstreetmap.org/listinfo/talk-nl">https://lists.openstreetmap.org/listinfo/talk-nl</a>
</pre>
</blockquote>
<p> </p>
<div> </div>
</body></html>