Geofachdaten im Internet mit OpenLayers

Aus kvwmap
Wechseln zu: Navigation, Suche

--Hschmidt 09:21, 8. Nov 2010 (CET)
Am Beispiel des Themas "Bürgerbüros im Landkreis Ludwigslust" wird ein einfaches Beispiel zur Präsentation von Geofachdaten im Internet aufgezeigt.

Es werden folgenden Techniken eingesetzt:

1. Datenerfassung mit kvwmap über den generischen Layereditor (GLE)

2. Datenbereitstellung als ogc-WMS (hier über den kvwmap-Server)

3. Web Map Client "Openlayers"

4. Basiskarte "OpenStreetMap (OSM)"


Zu 1. Datenerfassung:
Die Datenerfassung mit dem GLE wird als bekannt vorausgestzt.

Zu 2. Datenbereitstellung:
Zur Bereitstellung wurde ein WMS auf das Thema aufgebaut. Einfach geht das über den WMS-Export von kvwmap. Die somit erstellte WMS-Datei und der Dienst sollte dann noch angepasst werden. Hierbei ist folgendes zu beachten:

Der WMS-Dienst sollte die sog. Google-Projektion, spherical mercator, EPSG 900913 unterstützen um ihn in Verbindung mit OpenStreetMap Daten zu verwenden. Dazu die epsg Datei von proj4 auf dem wms-Server durch diese Zeile ergänzen, falls nicht schon vorhanden:

# Spherical Mercator
<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 +nadgrids=@null +no_defs <>

Tip am Rande: Bei der Gelegenheit die nicht benötigten Einträge von exotischen Projektionen entfernen!

Die Tabelle spatial_ref_sys von PostGIS mit dem Eintrag für sperical mercator ergänzen falls noch nicht vorhanden:

INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, srtext, proj4text) VALUES (900913, 'EPSG', 900913, 'GEOGCS["WGS 84", DATUM["World Geodetic System 1984", SPHEROID["WGS 84", 6378137.0,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0.0,AUTHORITY["EPSG","8901"]], UNIT["degree",0.017453292519943295],AXIS["Longitude", EAST], AXIS["Latitude",NORTH],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["semi_minor", 6378137.0],PARAMETER["latitude_of_origin",0.0], PARAMETER["central_meridian", 0.0], PARAMETER["scale_factor",1.0], PARAMETER["false_easting", 0.0], PARAMETER["false_northing", 0.0],UNIT["m", 1.0], AXIS["x", EAST], AXIS["y", NORTH],AUTHORITY["EPSG","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 +nadgrids=@null +no_defs');

Dem Mapfile sollte besondere Beachtung geschenkt werden, weil es eine häufige Fehlerursache insbesondere bei der Sachdatenabfrage ist:
Im WEB-Objekt darf der Eintrag "wms_feature_info_mime_type" "text/html" und der Eintrag EPSG:900913 nicht fehlen.
Beispiel:

  WEB
   IMAGEPATH "/usr/local/apache2/htdocs/tmp/"
   IMAGEURL "/tmp/"
     METADATA
       "wms_feature_info_mime_type" "text/html"
       "wms_onlineresource"    "http://mein-server/cgi-bin/mapserv?map=/usr/local/apache2/wms/bbinfo.map&"
       "wms_extent"    "4404000 5886000 4491500 5953000"
       "ows_srs"    "EPSG:4326 EPSG:25832 EPSG:25833 EPSG:2398 EPSG:2399 EPSG:31468 EPSG:31469 EPSG:900913"
       "ows_title"    "Bürgerbüros im Landkreis Ludwigslust"
       "ows_abstract"    "Bürgerbüros im Landkreis LWL"        
       "ows_contactperson"    "Heinz Schmidt"
       "ows_contactposition"    "Team GIS / Geodatenmanagement"
       "ows_contactorganization"    "Landkreis Ludwigslust"        
       "ows_contactelectronicmailaddress"    "schmidt.h@ludwigslust.de"        
       "ows_fees"    "frei nutzbar"
       "wms_accessconstraints"    "none"
     END
   QUERYFORMAT text/html
   LEGENDFORMAT text/html
   BROWSEFORMAT text/html
 END

Für die Sachdatenabfrage ist es unbedingt erforderlich, dass jeder Layer - auch wenn er nicht abgefragt werden soll einen Template-Eintrag in der CLASS hat.

TEMPLATE "/usr/local/apache2/htdocs/templates/bbinfo.htm"

Wenn das Mapfile aus dem kvwmap WMS-Export stammt, prüfen ob nicht irgendwelche unnötigen Einträge vorhanden sind. Diese verursachen schon mal Probleme bei der Sachdatenabfrage.