560 likes | 1.36k Views
OpenLayers: Data Integration in an Open Source Map Browser. Prof. Dr. Franz-Josef Behr Hochschule für Technik, Stuttgart. Outline. Introduction OpenLayers Features, history, components Code example Software development features Types and integration of data layers Conclusion Examples
E N D
OpenLayers: Data Integration in an Open Source Map Browser Prof. Dr. Franz-Josef Behr Hochschule für Technik, Stuttgart
Outline • Introduction • OpenLayers • Features, history, components • Code example • Software development features • Types and integration of data layers • Conclusion • Examples • Remarks
Awareness and Ignorance http://today.reuters.com/news/articlenews.aspx?type=technologyNews&storyid=2007-09-05T170415Z_01_N05213136_RTRUKOC_0_US-FOSSETT-TECH.xml
Géoportail 3D OpenLayers BayernViewer BayernViewer 3D Google Acquires Keyhole NASA World Wind Microsoft Live Local 3D Microsoft Virtual Earth API Géoportail Microsoft Live Local Yahoo! Maps API V2 Google Maps Kosmosnimki Yahoo! Maps API 2004 2005 2006 2007 History
Web as platform Participa-tion Content syndication Web services …..………… Conceptual & social Web 2.0 Technical JavaScript AJAX XML RSS … Introduction: The Web 2.0 idea • an emerging change in paradigm in what the World Wide Web is and how it works -> decentralisation. • implies conceptual, technical and social aspects.
GeoWeb – the Geo part of Web 2.0 • … merging of geographical (location-based) information with the abstract information of traditional web sites. • Huge amount of data available • High interest on tools like Google Map API: ~90 mails / day • Geotagging: • “On the Flickr photo-sharing service … users have “geotagged” more than 25 million pictures, providing location data that allows them to be viewed on a map or through 3-D visualization software like Google Earth.“1 • platial.com: Access to > 30.000.000 locations 1http://www.nytimes.com/2007/07/27/technology/27maps.html?ex=1343275200&en=c0ca3a88644ae4a9&ei=5124&partner=permalink&exprod=permalink
[Free] Map Browsers • Google Maps, http://www.google.com/apis/maps/ • Yahoo! Maps API, http://developer.yahoo.com/maps/ • Microsoft Live Local, http://local.live.com/ • MapGuide Open Source, https://mapguide.osgeo.org/ • OpenLayer, http://www.openlayers.org/ • FlashEarth, http://www.flashearth.com/ • WorldKit, http://worldkit.org/ • ka-Map, http://ka-map.maptools.org/ • deegree iGeoPortal, http://www.lat-lon.de • WMS, WFS, WCS, Catalogue Service, Gazetteer Service • MappingWidgets, http://mappingwidgets.sourceforge.net/ • WMS, zoom in, zoom out, pan, info, overview • Chameleon, http://chameleon.maptools.org/ • p.mapper, http://www.pmapper.net/ • based on UMN MapServer/PHP/MapScript, zoom/pan, query, etc. • WMS Mapper, http://wms-map.sourceforge.net/: WMS, zoom
Outline • Introduction • OpenLayers • Features, history, components • Code example • software development process • Types and integration of data layers • Conclusion
What is OpenLayers? • an API for building web mapping applications, http://www.openlayers.org • pure client-side object-oriented JavaScript, using components from Prototype.js and the Rico library • AJAX (Asynchronous JavaScript and XML) • supports open and proprietary data standards / sources • efficient tiling • BSD licensed (standard licence for open source software, see http://svn.openlayers.org/trunk/openlayers/release-license.txt)
History of the Project • Started after Where 2.0 conference in 2005 • Motivated also by MetaCarta's business needs • released before Where 2.0 conference in 2006 • already used by > 10,000 people • is going to become a project of the Open Source Geospatial Foundation. … aims to become "the Apache of web mapping APIs"
Components of OpenLayers Maps just a prototype!
Simple integration into (X)HTML Including API(remote or local) Creating map object Adding layer Placeholder
OpenLayers development: Versioning and tracking • Code and content: in the OpenLayers Subversion (SVN) repository, http://svn.openlayers.org/ • enabling worldwide development • Project management using trac • tracking system for bugs, feature requests, version management etc (“tickets“) • interface to Subversion • allows wiki-like markup in descriptions and messages, creating links and seamless references between tickets, files, and wiki pages. • timeline gives historic view of the project.
OpenLayers‘s Subversion System • a version control system (successor of CVS) • trunk: current version of project • branches: copies of original source • tags: copies without modifications • sandbox: „playground“ for single developers http://en.wikipedia.org/wiki/Subversion_%28software%29
OpenLayers development: Groups involved • Users • Mailing lists participants • Registered developers (contributors) • Project Steering Committee (7 members, http://trac.openlayers.org/wiki/SteeringCommitteeMembers) • Committee Chair • facilitates discussion of proposals, responsible for memberships of the Project Steering Committee. • adjudication in cases of disputes about voting. • Democratic process: Addition and removal of members from the committee, as well as selection of a Chair should be handled as a proposal to the committee.
OpenLayers development: Process Clear and sound development rules: • Proposals OpenLayers dev mailing list discussion and voting, for at least two business days. • Voting: "+1“: indicating support for the proposal and a willingness to support implementation. "-1“: to veto a proposal, must provide clear reasoning and alternate approaches to resolving the problem “-0”: indicates mild disagreement, but no effect; “0”: no opinion, “+0”: mild support, but no effect. • Project Steering Committee's votes will be counted. • Acceptance: +2 (including the proposer), no vetos (-1). • Veto can be resubmitted for an override vote.
OpenLayers development: Testing Methodology • Test.AnotherWay-Framework • more than 2100 automated tests (http://openlayers.org/blog/2007/08/23/automated-testing/) http://openlayers.org/dev/tests/run-tests.html
OpenLayers development: Classes, inheritance Source: Emanuel Schütze, http://www.smartmapbrowsing.org/html/index_en.html [2007-0919]
OpenLayers development: API documentation Source: http://dev.openlayers.org/apidocs/files/OpenLayers-js.html [2007-09-07]
Architecture • Multi-tier • REST-based (Representational state transfer) Webserver (Proxy) http http(REST) Geo-DBMS SQL http Internet Local files OpenLayers Client http
OGC WMS Google Maps MSN Live Local Yahoo! Maps Multimap ka-Map WorldWind Layers Classes • OGC WFS • GeoRSS • CSV • GML • KML • WKT Vector Layers, points, lines, polygons rendered with SVG / VML Raster Layers, tiled
GeoRSS • W3C 2006: “a simple model for tagging external content with geographic feature properties which are consistent with the general feature model and syntax of OGC GML.” • supported by Yahoo! Maps, Google Maps, Live Local, WorldKit, MapInfo, FME, Drupal, … Source: cadenhead.org <item xmlns="http://mywebserver.com/rss2"> <title>…</title> <description>…</description> <georss:point xmlns:georss="http://www.georss.org/georss"> 45.3515625 75.234375 </georss:point> </item>
GeoRSS in OpenLayers • Presently, two XML serializations are supported: GeoRSS Simple, W3C GeoRSS var georsslayer = new OpenLayers.Layer.GeoRSS(“georss.xml”, value); map.addLayer(georsslayer);
GeoJSON { "type": "Feature", "id": "OpenLayers.Feature.Vector_122", "properties": { }, "geometry": { "type": "Point", "coordinates": [ 115.3125, 24.9609375 ] }, "crs": { "type": "EPSG", "properties": { "code": 4326 } } } • JSON = JavaScript Object Notation • lightweight data-interchange format • efficient use in JavaScript programs • also supported by Google Maps
OGC‘s Geography Markup Language GML • only version 2 support • Integration of a GML Layer <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs"> <gml:featureMember xmlns:gml="http://www.opengis.net/gml"> <feature:features xmlns:feature=http://mapserver.gis.umn.edu/mapserver fid="OpenLayers.Feature.Vector_156"> <feature:geometry> <gml:Point> <gml:coordinates decimal="." cs=", " ts=“ ">75.2,45.3 </gml:coordinates> </gml:Point> </feature:geometry> </feature:features> </gml:featureMember> </wfs:FeatureCollection> map.addLayer(new OpenLayers.Layer.GML("GML", "gml/polygon.xml"));
Keyhole Markup Language - KML • „I added support for KML point display in about 20 minutes, including the time to find data and write a demo HTML page loading some example data. Adding LineString support was another 15 minutes.“http://crschmidt.net/blog/archives/201/openlayers-vector-support/ • polygons not yet supported • Integration of a KML Layer map.addLayer( new OpenLayers.Layer.GML( "KML", "kml/mc-search.kml", {format: OpenLayers.Format.KML} ) );
WMS • A WMS layer needs layername, URL, and parameters var map = new OpenLayers.Map('map'); var wmslayer = new OpenLayers.Layer.WMS( "WMS Stuttgart", "http://suasdemo.easywms.com/WMS/getmapcap.php?", { layers:'gruenflaechen,oeffentl_gebaeude,private_gebaeude', VERSION: "1.1.1", units: 'meters‚ transparent: 'false', format: 'image/png' maxExtent: 'new OpenLayers.Bounds(minx,miny,maxx,maxy)', maxResolution': 'auto‚ } ); map.addLayer(wmslayer);
WMS 1 // Register click event map.events.register('click', map, function (e) { // initialize the displaying text $('nodeList').innerHTML = "Loading... "; //define the parameters for getfeatureInfo var url = wmslayer.getFullRequestString({ REQUEST: "GetFeatureInfo", EXCEPTIONS: "application/vnd.ogc.se_xml", BBOX: wms.map.getExtent().toBBOX(), X: e.xy.x, Y: e.xy.y, INFO_FORMAT: 'text/html', QUERY_LAYERS: wms.params.LAYERS, REDIUS:2, WIDTH: wmslayer.map.size.w, HEIGHT: wmslayer.map.size.h}); //get featureInfo OpenLayers.loadURL(url, '', this, setHTML); Event.stop(e); }); //display the result function setHTML(response) { $('nodeList').innerHTML = response.responseText; } • GetCapabilities supported by extension1 • GetMap and GetFeatureInfo supported • WMS-T support 2 3 4 1see http://trac.openlayers.org/wiki/WMSManager, http://www.ominiverdi.org/openlayers/sandbox/openlayers/examples/wms_manager.html
WFS support • WFS • WFS-Transactional function init(){ OpenLayers.ProxyHost="/proxy/?url="; map = new OpenLayers.Map('map'); layer = new OpenLayers.Layer.WMS( "OpenLayers WMS", "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} ); map.addLayer(layer); layer = new OpenLayers.Layer.WFS( "Owl Survey", "http://www.bsc-eoc.org/cgi-bin/bsc_ows.asp?", {typename: "OWLS", maxfeatures: 10}, { featureClass: OpenLayers.Feature.WFS}); map.addLayer(layer); }
var googleLayer = new OpenLayers.Layer.Google( "Google Satellite" , {type: G_SATELLITE_MAP, 'maxZoomLevel':18} ); var googleLayer = new OpenLayers.Layer.Google( "Google Satellite" , {type: G_SATELLITE_MAP, 'maxZoomLevel':18} );
var satellite = new OpenLayers.Layer.Google( "Google Maps" , {type: G_NORMAL_MAP, 'maxZoomLevel':18} ); var satellite = new OpenLayers.Layer.Google( "Google Maps" , {type: G_NORMAL_MAP, 'maxZoomLevel':18} );
Additionally, OpenLayers supports... • Yahoo! Maps • MultiMap
Outline • Introduction • OpenLayers • Features, history, components • Code example • Software development features • Types and integration of data layers • Conclusion • Examples • Remarks
Samples: Integration of SRTM data Source: http://dev.openstreetmap.org/~spaetz/?lat=6217998.0293&lon=996891.50684&zoom=8&layers=TTB [2007-09-05]
Sample: OpenStreetMap • aims to be a free editable map of the whole world. • http://www.openstreetmap.org/ Source: http://www.openstreetmap.org/ [2007-09-10]
Conclusion • GeoWeb merges locational and abstract information. • Driven by users. • Several emerging geo-standards developed by general IT stakeholders (GeoRSS, KML). • OpenLayers is a promising Open Source web mapping client API. • Modern software development tools and processes ensure quality and progress of the work. • OpenLayers is capable to integrate many data resources and formats. • Powerful, easy to understand and to use.