1 WMS voor Kadastrale kaart Limburg GEORZ-lab Datum: 17 juli 2009 Auteur: GEORZ-lab, Just van den Broecke Versie: 2 Contact: Ebrahim Hemmatnia (Advise...
WMS voor Kadastrale kaart Limburg GEORZ-lab Datum: 17 juli 2009 Auteur: GEORZ-lab, Just van den Broecke Versie: 2 Contact: Ebrahim Hemmatnia (Adviseur PPI GEO, Kadaster), tel. 088 – 183 22 16.
Inleiding Dit document beschrijft de technische realisatie van een Web Mapping Service (WMS) voor een Kadastrale kaart van Limburg gebruikmakend van Open Source geo-tools zoals de GeoServer WMS/WFS server en de ruimtelijke database PostgreSQL/PostGIS. Hierbij werd gebruik gemaakt van kadastrale brondata geleverd door Cartografische Informatie Database Produktie (CIDP). De klant voor deze WMS was RvR Limburg C.V. Overzicht Figuur 1. hieronder geeft een totaal overzicht van de server architectuur. Hierbij geven de pijlen de richting van de dataflow vanaf de brondata (PostGIS) naar de uiteindelijke client welke de WMS service afneemt (Client Applicaties). Deze figuur zal tevens gebruikt worden om de inrichting van de server te beschrijven.
Client Applicaties (Browser+Desktop)
http/https
Apache Webserver http proxy
Tomcat WMS SLD
WFS
Adm
Tomcat GeoServer
PostGIS
Figuur 1. Server Architectuur
Server Inrichting GeoServer is een in Java (J2EE) geschreven WFS/WMS server die zowel standalone als binnen een zogenaamde J2EE Applicatie Server kan draaien. Binnen onze opzet is
Apache Tomcat als J2EE Applicatie Server gekozen. Binnen Tomcat draait GeoServer als web-applicatie. De Apache webserver levert de toegang tot de website www.kademo.nl en de webservices daarbinnen. Apache is via een proxy module gekoppeld aan Tomcat. Hierbij worden requests voor /geoserver/* doorgegeven (bijv. WMS requests) naar GeoServer binnen Tomcat. De laatste server component is aangeduid met “PostGIS”. Dit is in feite een PostgreSQL relationele database (RDBMS) voorzien van de extensie (plugin) PostGIS die ondersteuning voor ruimtelijke (spatial) data biedt binnen PostgreSQL. Op dit moment draaien Apache+Tomcat en PostgreSQL/PostGIS ieder op aparte servers binnen de BedrijvenWeb hosting organisatie. Brondata Import In Figuur 2 staat de conversie-flow van de (kadastrale) data weergeven. De ovalen geven steeds een proces of conversie-tool aan.
Oracle
export
CIDP ESRI Shapefiles
GEORZ shp2pgsql
PostGIS Dumpfiles
psql
PostGIS
Figuur 2. Conversie flow van brondata
De (LKI) kadastrale brondata werd geleverd door CIDP en had als datum 29 april 2009. De originele brondata staat in Oracle en wordt eens per maand ververst. GEORZ-lab verkreeg de brondata als ESRI Shapefiles door CIDP ge-exporteerd uit Oracle. Het GEORZ startpunt zijn dus ESRI Shapefiles. In bijzonder zijn de files NED_GEBW_polyline.shp (1.78 GB) , de kadastrale gebouwen en NED_VLAK_region.shp (2.15 GB), de kadastrale vlakken gebruikt. De import naar PostGIS is gedaan met de standaard PostGIS tool shp2pgsql zoals in de figuur aangegeven. shp2pgsql kan zowel rechtstreekse import naar PostGIS doen alsook een
conversie naar PostGIS SQL Dumpfiles. Wij hebben voor dit laatste gekozen voornamelijk vanwege herbruikbaarheid op test en produktie systemen. Ook is hierbij herprojectie mogelijk en wordt voor geometrie kolommen altijd een ruimtelijke index aangemaakt. Herprojectie was in ons geval niet nodig. De laatste stap is een simpele import met behulp van de PostgreSQL tool psql om de Dumpfiles in de draaiende PostGIS database te importeren. De tabellen heten lki_gebouwen en lki_vlakken. Hieronder staan de specifieke (Unix) scripts die hierbij gebruikt zijn. Deze zijn nu simpel te hergebruiken wanneer er een nieuwe versie van de Shapefiles geleverd wordt. shp2pgsql -s 28992 -D -I NED_VLAK_region.shp lki_vlakken > NED_VLAK_region.dmp shp2pgsql -s 28992 -D -I NED_GEBW_polyline.shp lki_gebouwen > NED_GEBW_polyline.dmp psql -f NED_VLAK_region.dmp -U <user> <password> psql -f NED_GEBW_polyline.dmp -U <user> <password>
Inrichten WMS GeoServer kan via haar adminstratieve web interface gemakkelijk aan PostGIS gekoppeld worden. Hierbij zal GeoServer alle tabellen met ruimtelijke kolommen automatisch als OGC Simple Features herkennen. De tabellen lki_gebouwen en lki_vlakken zijn dus ieder de bron voor (twee) nieuwe feature types die uiteindelijk ieder een laag in de WMS kaart vormen. De stappen voor iedere feature/laag zijn als volgt: 1. maak nieuwe Feature aan in GeoServer (keuze uit dropdown-list, bijv “lki_gebouwen”) 2. edit Feature, meestal weinig nodig Na deze twee stappen zijn voor iedere Feature al Web Feature Service (WFS) lagen beschikbaar. Om nu de Features aan de WMS toe te voegen moet nog een Styled layer Descriptor (SLD) voor iedere Feature gemaakt worden. SLD is een OGC standaard om stijl-informatie (vgl CSS bij HTML) uit te drukken. Hieronder een voorbeeld voor de Feature “lki_vlakken”. <StyledLayerDescriptor version="1.0.0" ...(namespaces info) LKI_vlakken <UserStyle> <Title>LKI Vlakken Simpele stijl voor LKI data. <Title>LKI_Vlakken <MaxScaleDenominator>25000 <Stroke> #0000001VerdanaNormal8
Hier zien we dat voor kadastrale vlakken op schaal 1:25000 en hoger (na bepaald zoomlevel) zwarte/transparante polygonen worden getekend voorzien van hun object nummer (kolom objectnumm). Hiermee is de WMS met kadastrale vlakken en -gebouwen gereed voor gebruik. Hieronder een screenshot van centrum Maastricht met vlakken (zwart) en bebouwingen (rood) op een OpenStreetMap (OSM) basiskaart.
Figuur 3. Kadastrale Kaart op OpenStreetMap Basiskaart
WMS Afbakening Omdat de WMS voor RvR alleen Limburg diende te beslaan is gekozen om via een PostGIS View 2 nieuwe Features (kaartlagen) aan te maken. Een PostGIS View is in feite een nieuwe tabel die door middel van een query gedefinieerd wordt. Als deze query een ruimtelijke “extent” (bounding box) bevat wordt hiermee de Feature ruimtelijk begrensd. De SQL hiervoor is als volgt. CREATE OR REPLACE VIEW percelen_lim AS select gid as oid, objectnumm, the_geom from lki_vlakken where the_geom && SetSRID('BOX3D(160000 300000, 220000 425000)'::box3d,28992); INSERT INTO "geometry_columns" VALUES ('','public','percelen_lim','the_geom', 2,28992,'MULTIPOLYGON'); CREATE OR REPLACE VIEW gebouwen_lim AS select gid as oid, classifica, objectdatu, selectieco, the_geom from lki_gebouwen where the_geom && SetSRID('BOX3D(160000 300000, 220000 425000)'::box3d,28992); INSERT INTO "geometry_columns" VALUES ('','public','gebouwen_lim','the_geom', 2,28992,'MULTILINESTRING');
Hiermee worden dus twee nieuwe tabellen, dus Features, mee aangemaakt, respektievelijk percelen_lim en gebouwen_lim. De data wordt niet gecopieerd maar blijft in oorspronkelijke tabellen. WMS Gegevens WMS URL: https://www.kademo.nl/geoserver/wms? WMS lagen Kadastrale kaart Limburg: percelen_lim en gebouwen_lim Voorbeeld URL https://www.kademo.nl/geoserver/wms?LAYERS=percelen_lim %2Cgebouwen_lim&FORMAT=image%2Fpng&TRANSPARENT=true&SERVICE=WMS&V ERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2 Fvnd.ogc.se_inimage&SRS=EPSG%3A28992&BBOX=175848.4375,317175 .78125,176748.4375,318014.84375&WIDTH=576&HEIGHT=537
Of direct: http://tinyurl.com/n42s2e
WMS/WFS Beperking GeoServer De huidige versie van GeoServer kent 1 globaal WMS en WFS. Dus in een GetCapabilities verschijnen alle lagen. In de aankomende versie 2 (nu in beta) is een flexibeler configuratie mogelijk waarmee meerdere WMS-en/WFS-en kunnen worden aangemaakt. Daardoor kunnen we met GEORZ-lab per klant een specifiek WMS/WFS aanmaken en aanbieden. Tools en Versies Tool