Re: [OSM-talk-nl] OpenStreetMap WMS server
Hoi Milo, sorry dat ik zo laat reageer, maar is het niet handig om TileCache (http://www.tilecache.org/) op je server te installeren? Het steeds aanroepen van Mapserver vergt echt vrij veel processorkracht van je server (het steeds opnieuw renderen is best zwaar). Probeer maar eens met een man of twintig tegelijk je kaartje te verschuiven (pannen). Met tilecache tussen je webclient en de server kun je zo 'gaandeweg' de tiles(cache) opbouwen. Je hoeft niet persee te 'pre-renderen', maar het kan wel. Je kunt tilecache vrij eenvoudig naar mapserver toe configureren. Van elk request wordt dan gekeken of er al een bestaande tile is, if so: dan wordt die uitgeserveerd. En anders wordt de url doorgegeven aan mapserver die dan de tile genereert (op basis van je huidige mapfile) en opslaat voor toekomstig gebruik. Een ander voordeel wat ik ook vaak noem is het feit dat mensen door googlemaps wat verwend zijn geraakt mbt response tijden, de 'tiles' vliegen je echt binnen luttele centiseconden (kan dat? (microseconde lijkt me wat overdreven...) om de oren. Met tiles is het een beetje 'googlemaps-like'. Tilecache is een setje python files die je met een configfile configureert. Ik heb het zelf al voor een paar projecten ingezet: vaak de baselayers als tiles, en eventuele dynamische datalagen erbovenop WEL als realtime gerenderde mapserver images. Ok, vergeet dit verder maar als je nooit performance problemen hebt, een server een beetje aan het werk houden is ook wel eens leuk ;-) Groet Richard Milo van der Linden wrote: Leuk om te zien dat jullie hier ook actief mee bezig zijn! Als je i.p.v. een standaard openLayer layer deze gebruikt: new OpenLayers.Layer.WMS.Untiled Dan behandelt ie de WMS als één plaatje wat de snelheid met een factor 9 verhoogt. Waarom? Als je een tiled server gebruikt wordt mapserver voor elke afzonderlijke tile aangeroepen. Per tile zal mapserver dan een compleet plaatje opbouwen. Dit is in het geval de rendering live plaatsvindt niet efficient. Wél bij pre-rendered tiles! Om een voorbeeld te bekijken van het javascript voor een werkende RD koppeling kun je even spieken op: http://www.mapserv.nl/init.js Ook is mijn WMS server gepromoot naar producte, ik zie dat je de oude URL nog gebruikt. De nieuwe is: http://www.mapserv.nl/cgi-bin/mapserv.exe?map=E:\\mapconfig\\osm.mapSRS=EPSG:28992 Ja, deze goochem heeft www.mapserv.nl in gebruik genomen. ;-) Je ziet dat ik naast dat ik de EPSG in de init.js definieer ook nog aan mijn mapserver vertel dat ie wel in EPSG:28992 moet aanbieden. Anders krijg je een verwrongen kaart. Mijn eigen OpenLayers voorbeeld dat gebruik maakt van bovengenoemde init.js staat op http://www.mapserv.nl Happy hunting! P.S. beetje reclame voor mijzelf, mocht je behoefte hebben aan WMS hosting (het beschikbaar stellen van eigen, niet OSM kaart-data via Mapserver) dan kun je bij mij terecht voor aantrekkelijke hosting fees. Uiteraard krijg je dan localhost access naar de OpenStreetMap/AND kaart geheel kostenloos tot je beschikking! Richard Duivenvoorde schreef: Hoi, Je moet OpenLayers even vertellen dat je de kaart in 28992 wilt: als je bijvoorbeeld op deze manier een map definieert: map = new OpenLayers.Map('map', { 'projection':'EPSG:28992', 'units':'m', 'maxExtent':new OpenLayers.Bounds(-2,30,30,65), 'resolutions':[1, 2.5, 5, 10, 50, 100, 175, 256, 512], }); layer = new OpenLayers.Layer.WMS.Untiled( Milo, http://82.176.214.209/cgi-bin/mapserv.exe?map=/ms4w/apps/mappingworlds/service/ANDNL.mapversion=1.1.1service=WMS;, {layers: 'woonkern,Industrie,Recreatie,Industrie,Parken,Water,bos,Spoorwegen,Wegen,Stations,begraafplaats', 'FORMAT':'png', 'transparent':'false'} ); map.addLayer(layer); map.zoomToMaxExtent(); Krijg je dit soort url's: http://82.176.214.209/cgi-bin/mapserv.exe?map=/ms4w/apps/mappingworlds/service/ANDNL.mapversion=1.1.1service=WMSLAYERS=woonkern%2CIndustrie%2CRecreatie%2CIndustrie%2CWegen%2CSpoorwegen%2CParken%2CWater%2Cbos%2CStations%2CbegraafplaatsFORMAT=pngTRANSPARENT=falseREQUEST=GetMapSTYLES=EXCEPTIONS=application%2Fvnd.ogc.se_inimageSRS=EPSG%3A28992BBOX=-272610%2C234425%2C546590%2C720825WIDTH=1600HEIGHT=950 en ziet nl er weer ok uit. (let niet op de laag(volgorde), even gauw bij elkaar gesprokkeld). Richard Peter Peterse wrote: Hallo Richard en de rest natuurlijk ook, Een uitgebreidere handleiding dan http://wiki.openstreetmap.org/index.php/Mapnik en dan het onderdeel osm2pgsql heb ik nog niet beschikbaar. Ben er overigens al wel mee bezig. Tot op heden maak ik gebruik van Milo's WMS server in combinatie met een WMS van Rijkswaterstaat. http://www.xs4all.nl/~ppeterse/openstreetmap/index.html Zowel Milo's WMS als Rijkswaterstaat ondersteunen volgens de XML EPSG:28992
Re: [OSM-talk-nl] OpenStreetMap WMS server
Hallo Richard, Bedankt voor het idee! Richard Duivenvoorde schreef: Hoi Milo, sorry dat ik zo laat reageer, maar is het niet handig om TileCache (http://www.tilecache.org/) op je server te installeren? Het steeds aanroepen van Mapserver vergt echt vrij veel processorkracht van je server (het steeds opnieuw renderen is best zwaar). Probeer maar eens met een man of twintig tegelijk je kaartje te verschuiven (pannen). Net even geprobeerd, in mijn geval is dat i.d.d. niet handig. De machine die momenteel als mapserv host dienst doet is een W2003, IIS6.0 ASP.NET machine. Het installeren van tilecache op deze architectuur is nu niet echt dat je zegt vaak gedaan en goed gedocumenteerd, iedereen weet te vertellen hoe het moet met Apache, maar over IIS zijn geen topics te vinden. Nu geen tijd om dit verder uit te zoeken, en gelet op het hoe en wat van mijn mapserv machine laat ik het even zitten. Begrijp me niet verkeerd, ik heb uiteindelijk grootse plannen, wil een park met mapservers opzetten die elkaar loadbalancen , specifieke postGres database servers aanroepen etc. maar nu nog niet. Met tilecache tussen je webclient en de server kun je zo 'gaandeweg' de tiles(cache) opbouwen. Je hoeft niet persee te 'pre-renderen', maar het kan wel. Je kunt tilecache vrij eenvoudig naar mapserver toe configureren. Van elk request wordt dan gekeken of er al een bestaande tile is, if so: dan wordt die uitgeserveerd. En anders wordt de url doorgegeven aan mapserver die dan de tile genereert (op basis van je huidige mapfile) en opslaat voor toekomstig gebruik. Waar checkt ie op? een md5-hash waarin ook de bestandsgrootte zit versleuteld? Ja, de huidige OSM kaart is in principe statisch, maar zal in de toekomst dynamisch worden als het aan mij ligt. Daarnaast heb ik nog een wereldkaart die ook statisch is, maar de klantimplementatie van mijn mapserver is hoog-dynamisch, klanten wijzigen via qGIS rechtstreeks de postGIS tabellen die dan ook direct dienen te verschijnen, gaat dit goed komen met tilecache? Of zou de cache dan bij iedere wijziging op postGIS db niveau moeten worden geleegd? Een ander voordeel wat ik ook vaak noem is het feit dat mensen door googlemaps wat verwend zijn geraakt mbt response tijden, de 'tiles' vliegen je echt binnen luttele centiseconden (kan dat? (microseconde lijkt me wat overdreven...) om de oren. Met tiles is het een beetje 'googlemaps-like'. Tsja, ik heb laatst bij een klant een showcase gedaan vergelijk CartoWeb met Google Maps met Firebug aan. Klant klaagde dat zijn kaart traag in beeld kwam. Ik heb hem laten zien dat de kaart het probleem niet is, zijn eigen mapserver host elke afzonderlijke tile vele malen sneller dan Google (logisch, minder concurrent users). Maar duidelijk te zien was dat terwijl je in Google naar de kaart zit te kijken laadt Google vrolijk door! Soms tot wel 5Mb aan tiles die niet in beeld zijn, maar bij het schuiven plots wel om het hoekje duiken! Tilecache is een setje python files die je met een configfile configureert. Ik heb het zelf al voor een paar projecten ingezet: vaak de baselayers als tiles, en eventuele dynamische datalagen erbovenop WEL als realtime gerenderde mapserver images. Ok, vergeet dit verder maar als je nooit performance problemen hebt, een server een beetje aan het werk houden is ook wel eens leuk ;-) Ik heb inderdaad niet zoveel performance problemen. Terwijl ik toch gemiddeld zo'n 3000 mapserver requests per dag verwerk. Ok, er wordt geen Googolistische snelheid gehaald, maar de klanten zijn tevree. En daar gaat het om. Hardware bijkopen kan in de toekomst als er iets van een ROI in beeld begint te komen. Groet Richard Milo van der Linden wrote: Leuk om te zien dat jullie hier ook actief mee bezig zijn! Als je i.p.v. een standaard openLayer layer deze gebruikt: new OpenLayers.Layer.WMS.Untiled Dan behandelt ie de WMS als één plaatje wat de snelheid met een factor 9 verhoogt. Waarom? Als je een tiled server gebruikt wordt mapserver voor elke afzonderlijke tile aangeroepen. Per tile zal mapserver dan een compleet plaatje opbouwen. Dit is in het geval de rendering live plaatsvindt niet efficient. Wél bij pre-rendered tiles! Om een voorbeeld te bekijken van het javascript voor een werkende RD koppeling kun je even spieken op: http://www.mapserv.nl/init.js Ook is mijn WMS server gepromoot naar producte, ik zie dat je de oude URL nog gebruikt. De nieuwe is: http://www.mapserv.nl/cgi-bin/mapserv.exe?map=E:\\mapconfig\\osm.mapSRS=EPSG:28992 Ja, deze goochem heeft www.mapserv.nl in gebruik genomen. ;-) Je ziet dat ik naast dat ik de EPSG in de init.js definieer ook nog aan mijn mapserver vertel dat ie wel in EPSG:28992 moet aanbieden. Anders krijg je een verwrongen kaart. Mijn eigen OpenLayers voorbeeld dat gebruik maakt van bovengenoemde init.js staat op http://www.mapserv.nl Happy hunting! P.S. beetje reclame voor mijzelf, mocht je behoefte hebben aan WMS hosting
Re: [OSM-talk-nl] OpenStreetMap WMS server
Hoi Peter, ik ben zeker van plan om dit ook te gaan proberen op korte termijn. Heb je ergens een korte handleiding staan? Wat betreft 'plat' lijken, en projecties, ik ben door schade en schande wat wijzer geworden: wij zijn 'gewend' aan de RD (rijksdriehoekstelsel) projectie. Die heeft als epsg code epsg:28992. Op wereld schaal wordt vaak WGS-84 gebruikt (met epsg code epgsg:4326). Nederland ziet er een beetje verwrongen uit dan. Veel mappingservices die tegenwoordig worden gebruikt (googlemaps, virtual earth enz enz) gebruiken echter een 'nieuwe' projectie. Je kutn dan de hele wereld afbeelden, en nederland ziet er dan toch 'fatsoenlijk' uit. Hiervan waren een tijdlang de juiste parameters niet duidelijk. Intussen zijn die voor de veel gebruikte projectie lib 'proj' wel gevonden (zie: http://www.spatialreference.org/ref/user/google-projection/) en heeft de projectie de code epsg:900913 (lees 'google') gekregen. Dus als je je openstreets mapserver 'even' wilt combineren met google, kun je twee dingen doen: -1- ofwel je laat de mapserver je data bij het genereren van je kaart-images je data on-the-fly omzetten. Dat doet hij als je in je mapfile hebt aangegeven dat de mapserver ook epsg:900913 uitserveert, en je dus een aanroep doet voor een epsg:900913 kaartje. Mapserver kent echter standaard niet de epsg:900913 projectie. Daarvoor moet je dan even in je proj-file (voor ms4w bv C:\ms4w\proj\nad\epsg ) de volgende regel toevoegen: # http://www.nabble.com/Google-Projection:-EPSG:900913-t4559806.html # Google Mercator projection epsg:900913 # Used in combination with GoogleMercator layer type in OpenLayers 900913 +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m [EMAIL PROTECTED] +no_defs -2- ofwel je laat postgis 'even' al je data in een keer omzetten. Dat kan door postgis te laten weten hoe de 900913 in elkaar zit: voeg +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m [EMAIL PROTECTED] +no_defs toe aan je 'spatial_ref_sys' tabel. en dan een query als: SELECT AddGeometryColumn('public', 'tabelnaam', 'wkb_geometry_900913', 900913, 'POINT', 2) en UPDATE tabelnaam SET wkb_geometry_900913 = Transform(wkb_geometry, 900913) En om even snel een goed beeld te krijgen: - gebruik een desktop gispakket die kan babbelen met mapservers, bv qgis (www.qgis.org) of udig (http://udig.refractions.net/) - gebruik openlayers (www.openlayers.org) en firefox en de firebug plugin om alle url's te bekijken Ok, ik hoop dat iemand hier iets aan heeft. Groet Richard Peter Peterse wrote: Hallo, Inmiddels is het gelukt om een PostGIS database met de OSM data te vullen. Heeft iemand al een mapfile voor mapserv gemaakt? Milo waarom ziet jouw WMS server er zo plat uit? Als ik deze vergelijk met de openstreetmap dan lijkt de jouwe plat gedrukt te worden. Alvast bedankt. Peter ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl
Re: [OSM-talk-nl] OpenStreetMap WMS server
Hallo Richard en de rest natuurlijk ook, Een uitgebreidere handleiding dan http://wiki.openstreetmap.org/index.php/Mapnik en dan het onderdeel osm2pgsql heb ik nog niet beschikbaar. Ben er overigens al wel mee bezig. Tot op heden maak ik gebruik van Milo's WMS server in combinatie met een WMS van Rijkswaterstaat. http://www.xs4all.nl/~ppeterse/openstreetmap/index.html Zowel Milo's WMS als Rijkswaterstaat ondersteunen volgens de XML EPSG:28992 http://www.mapserv.nl/cgi-bin/mapserv.exe?map=E:\mapconfig\osm.mapVERSION=1.1.1REQUEST=GetCapabilitiesSERVICE=WMS http://www.rijkswaterstaat.nl/services/geoservices/basispakket/nationaalwegenbestand?VERSION=1.1.1REQUEST=GetCapabilitiesSERVICE=WMS Maar als ik de eigenschappen van een plaatjes vanuit mijn voorbeeld OpenLayer pagina opvraag staat er: SRS=EPSG%3A4326 Met als resultaat een plat samen gedrukt Nederland. Alvast bedankt. Peter. ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl
[OSM-talk-nl] OpenStreetMap WMS server
Hallo, Inmiddels is het gelukt om een PostGIS database met de OSM data te vullen. Heeft iemand al een mapfile voor mapserv gemaakt? Milo waarom ziet jouw WMS server er zo plat uit? Als ik deze vergelijk met de openstreetmap dan lijkt de jouwe plat gedrukt te worden. Alvast bedankt. Peter ___ Talk-nl mailing list Talk-nl@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-nl