Couchbase Syncpoint, GeoCouch und MapQuery Volker Mische Couchbase Freie und Open Source Software für Geoinformationssysteme Konferenz 20. 22. März Dessau Volker Mische (@vmische) FOSSGIS 2012 Dessau 1 / 33
Über mich Volker Mische(vmx), volker@couchbase.com,@vmische GeoCouch Erfinder Open Source-Entwickler, Erlang and JavaScript Fan Open Source-Befürworter in allen Lebenslagen Volker Mische (@vmische) FOSSGIS 2012 Dessau 2 / 33
Replikation Volker Mische (@vmische) FOSSGIS 2012 Dessau 3 / 33
Kein Empfang Volker Mische (@vmische) FOSSGIS 2012 Dessau 4 / 33
Esgab mal Empfang Bild: Naval Air Crewman 1st Class Jay Okonek Volker Mische (@vmische) FOSSGIS 2012 Dessau 5 / 33
Replikation Volker Mische (@vmische) FOSSGIS 2012 Dessau 6 / 33
Replikation Volker Mische (@vmische) FOSSGIS 2012 Dessau 6 / 33
Replikation Volker Mische (@vmische) FOSSGIS 2012 Dessau 6 / 33
Replikation Volker Mische (@vmische) FOSSGIS 2012 Dessau 6 / 33
Replikation Volker Mische (@vmische) FOSSGIS 2012 Dessau 6 / 33
Replikation Volker Mische (@vmische) FOSSGIS 2012 Dessau 6 / 33
Replikation Volker Mische (@vmische) FOSSGIS 2012 Dessau 6 / 33
Replikation Volker Mische (@vmische) FOSSGIS 2012 Dessau 6 / 33
Replikation Volker Mische (@vmische) FOSSGIS 2012 Dessau 6 / 33
Replikation Volker Mische (@vmische) FOSSGIS 2012 Dessau 6 / 33
Replikation Volker Mische (@vmische) FOSSGIS 2012 Dessau 6 / 33
Couchbase ist nicht Apache CouchDB! Bilder: Couchbase, Apache Foundation Volker Mische (@vmische) FOSSGIS 2012 Dessau 7 / 33
Bild: Couchbase Volker Mische (@vmische) FOSSGIS 2012 Dessau 8 / 33
Firmenname Bild: Couchbase Volker Mische (@vmische) FOSSGIS 2012 Dessau 8 / 33
Firmenname und Produkt Bild: Couchbase Volker Mische (@vmische) FOSSGIS 2012 Dessau 8 / 33
Couchbase Server Datenbank Volker Mische (@vmische) FOSSGIS 2012 Dessau 9 / 33
Couchbase Server Datenbank Nicht relational Volker Mische (@vmische) FOSSGIS 2012 Dessau 9 / 33
Couchbase Server Datenbank Nicht relational Dokumentbasiert (JSON) {} Volker Mische (@vmische) FOSSGIS 2012 Dessau 9 / 33
Ziele von Couchbase Server Daten verteilen Volker Mische (@vmische) FOSSGIS 2012 Dessau 10/ 33
Ziele von Couchbase Server Daten verteilen Hoher Durchsatz max Volker Mische (@vmische) FOSSGIS 2012 Dessau 10/ 33
Ziele von Couchbase Server Daten verteilen Hoher Durchsatz Geringe Latenzzeit min max Volker Mische (@vmische) FOSSGIS 2012 Dessau 10/ 33
GeoCouch Volker Mische (@vmische) FOSSGIS 2012 Dessau 11/ 33
Was ist GeoCouch? Bilder: Greg Habermann, NASA Volker Mische (@vmische) FOSSGIS 2012 Dessau 12/ 33
GeoCouch Bilder: NASA, Couchbase, Apache Foundation Volker Mische (@vmische) FOSSGIS 2012 Dessau 13/ 33
GeoCouch für Couchbase Bilder: NASA, Couchbase, Apache Foundation Volker Mische (@vmische) FOSSGIS 2012 Dessau 13/ 33
GeoCouch für Couchbase und CouchDB Bilder: NASA, Couchbase, Apache Foundation Volker Mische (@vmische) FOSSGIS 2012 Dessau 13/ 33
Wie alles begann Volker Mische (@vmische) FOSSGIS 2012 Dessau 14/ 33
Funktionalität Alle Geometriearten(nicht nur Punkte) HTTP API (OpenSearch) JSON Rechtecksabfrage, Geometrysuche Volker Mische (@vmische) FOSSGIS 2012 Dessau 15/ 33
GeoCouch(CouchDB) Nutzer Tile-Cache: MapProxy Volker Mische (@vmische) FOSSGIS 2012 Dessau 16/ 33
GeoCouch(CouchDB) Nutzer Tile-Cache: MapProxy Vektordaten: GeoCouch + MapQuery Volker Mische (@vmische) FOSSGIS 2012 Dessau 16/ 33
GeoCouch(CouchDB) Nutzer Tile-Cache: MapProxy Vektordaten: GeoCouch + MapQuery Backend: GDAL, GeoTools, Deegree Volker Mische (@vmische) FOSSGIS 2012 Dessau 16/ 33
Zukunft Erweiterung der Abfragemöglichkeiten Nächste Nachbarn(Prototyp von Tobias Sauerwein) Radius Volker Mische (@vmische) FOSSGIS 2012 Dessau 17/ 33
Zukunft Erweiterung der Abfragemöglichkeiten Nächste Nachbarn(Prototyp von Tobias Sauerwein) Radius Multidimensionale Abfragen Wer eine geeignete Datenstrucktur kennt, bitte bei mir melden Volker Mische (@vmische) FOSSGIS 2012 Dessau 17/ 33
Couchbase Server Couchbase Server GeoCouch Volker Mische (@vmische) FOSSGIS 2012 Dessau 18/ 33
Couchbase Syncpoint Volker Mische (@vmische) FOSSGIS 2012 Dessau 19/ 33
TouchDB Datenbank auf mobilen Geräten (Android und ios) Resourcenschonend Schnelles Starten Replikation über CouchDB Protokoll Volker Mische (@vmische) FOSSGIS 2012 Dessau 20/ 33
TouchDB Couchbase Server GeoCouch TouchDB Volker Mische (@vmische) FOSSGIS 2012 Dessau 20/ 33
TouchDB Serverseitig Couchbase Server GeoCouch TouchDB Volker Mische (@vmische) FOSSGIS 2012 Dessau 20/ 33
TouchDB Serverseitig Clientseitig Couchbase Server GeoCouch TouchDB Volker Mische (@vmische) FOSSGIS 2012 Dessau 20/ 33
Couchbase Syncpoint Erweiterung für Couchbase Server und TouchDB Erstellen von Datenbanken Authentisierung Channels Volker Mische (@vmische) FOSSGIS 2012 Dessau 21/ 33
Couchbase Syncpoint Couchbase Server GeoCouch Serverseitig Syncpoint Clientseitig Syncpoint TouchDB Volker Mische (@vmische) FOSSGIS 2012 Dessau 21/ 33
Couchbase Syncpoint Serverseitig Clientseitig Couchbase Server Syncpoint Channels Syncpoint GeoCouch TouchDB Volker Mische (@vmische) FOSSGIS 2012 Dessau 21/ 33
HTML5 Apps auf mobilen Geräten HTML5 Keine mittlere Schicht Daten lokal gespeichert Offline verfügbar Bild: W3C Volker Mische (@vmische) FOSSGIS 2012 Dessau 22/ 33
MapQuery Volker Mische (@vmische) FOSSGIS 2012 Dessau 23/ 33
Was ist MapQuery? OpenLayers mit jquery Geschwister von GeoExt Volker Mische (@vmische) FOSSGIS 2012 Dessau 24/ 33
Warum MapQuery? Native jquery-events Einfachere API Mit API experimentieren Trotzdem direkter Zugriff auf OpenLayers möglich Volker Mische (@vmische) FOSSGIS 2012 Dessau 25/ 33
Ziele von MapQuery Übliche Dinge einfach machen Oberflächenvielfalt Alle Entwickler die jquery zusammen OpenLayers verwenden an einen Tisch bringen Volker Mische (@vmische) FOSSGIS 2012 Dessau 26/ 33
MapQuery Beispiel: Initialisierung 1 var map = $( #map ) Volker Mische (@vmische) FOSSGIS 2012 Dessau 27/ 33
MapQuery Beispiel: Initialisierung 1 var map = $( #map ).mapquery({ 2 3 4 5 6 7 }); Volker Mische (@vmische) FOSSGIS 2012 Dessau 27/ 33
MapQuery Beispiel: Initialisierung 1 var map = $( #map ).mapquery({ 2 layers:[{type: osm }] 3 4 5 6 7 }); Volker Mische (@vmische) FOSSGIS 2012 Dessau 27/ 33
MapQuery Beispiel: Initialisierung 1 var map = $( #map ).mapquery({ 2 layers:[{type: osm }] 3 center: { 4 5 6 } 7 }); Volker Mische (@vmische) FOSSGIS 2012 Dessau 27/ 33
MapQuery Beispiel: Initialisierung 1 var map = $( #map ).mapquery({ 2 layers:[{type: osm }] 3 center: { 4 position: [12.25, 51.83], 5 6 } 7 }); Volker Mische (@vmische) FOSSGIS 2012 Dessau 27/ 33
MapQuery Beispiel: Initialisierung 1 var map = $( #map ).mapquery({ 2 layers:[{type: osm }] 3 center: { 4 position: [12.25, 51.83], 5 zoom: 12 6 } 7 }); Volker Mische (@vmische) FOSSGIS 2012 Dessau 27/ 33
MapQuery Beispiel: Events 1 var mq = map.data( mapquery ); Volker Mische (@vmische) FOSSGIS 2012 Dessau 28/ 33
MapQuery Beispiel: Events 1 var mq = map.data( mapquery ); 2 mq.bind( 3 4 }); Volker Mische (@vmische) FOSSGIS 2012 Dessau 28/ 33
MapQuery Beispiel: Events 1 var mq = map.data( mapquery ); 2 mq.bind( addlayer 3 4 }); Volker Mische (@vmische) FOSSGIS 2012 Dessau 28/ 33
MapQuery Beispiel: Events 1 var mq = map.data( mapquery ); 2 mq.bind( addlayer, function(evt, layer) { 3 4 }); Volker Mische (@vmische) FOSSGIS 2012 Dessau 28/ 33
MapQuery Beispiel: Events 1 var mq = map.data( mapquery ); 2 mq.bind( addlayer, function(evt, layer) { 3 layer.opacity(0.5); 4 }); Volker Mische (@vmische) FOSSGIS 2012 Dessau 28/ 33
MapQuery Beispiel: Setzen/Auslesen 1 var mq = map.data( mapquery ); Volker Mische (@vmische) FOSSGIS 2012 Dessau 29/ 33
MapQuery Beispiel: Setzen/Auslesen 1 var mq = map.data( mapquery ); 2 var layers = mq.layers(); Volker Mische (@vmische) FOSSGIS 2012 Dessau 29/ 33
MapQuery Beispiel: Setzen/Auslesen 1 var mq = map.data( mapquery ); 2 var layers = mq.layers(); 3 mq.layers( Volker Mische (@vmische) FOSSGIS 2012 Dessau 29/ 33
MapQuery Beispiel: Setzen/Auslesen 1 var mq = map.data( mapquery ); 2 var layers = mq.layers(); 3 mq.layers({ 4 5 6 }); Volker Mische (@vmische) FOSSGIS 2012 Dessau 29/ 33
MapQuery Beispiel: Setzen/Auslesen 1 var mq = map.data( mapquery ); 2 var layers = mq.layers(); 3 mq.layers({ 4 type: GeoJSON, 5 url: data/dessau.json 6 }); Volker Mische (@vmische) FOSSGIS 2012 Dessau 29/ 33
MapQuery Beispiel: Widgets 1 $(.zoom ); Volker Mische (@vmische) FOSSGIS 2012 Dessau 30/ 33
MapQuery Beispiel: Widgets 1 $(.zoom ).mqzoombuttons(); Volker Mische (@vmische) FOSSGIS 2012 Dessau 30/ 33
MapQuery Beispiel: Widgets 1 $(.zoom ).mqzoombuttons({map: map}); Volker Mische (@vmische) FOSSGIS 2012 Dessau 30/ 33
MapQuery Beispiel: Widgets 1 $(.zoom ).mqzoombuttons({map: map}); 2 $( #featureinfo ) Volker Mische (@vmische) FOSSGIS 2012 Dessau 30/ 33
MapQuery Beispiel: Widgets 1 $(.zoom ).mqzoombuttons({map: map}); 2 $( #featureinfo ).mqfeatureinfo({ 3 4 5 6 7 }); Volker Mische (@vmische) FOSSGIS 2012 Dessau 30/ 33
MapQuery Beispiel: Widgets 1 $(.zoom ).mqzoombuttons({map: map}); 2 $( #featureinfo ).mqfeatureinfo({ 3 map: $( #map ), 4 5 6 7 }); Volker Mische (@vmische) FOSSGIS 2012 Dessau 30/ 33
MapQuery Beispiel: Widgets 1 $(.zoom ).mqzoombuttons({map: map}); 2 $( #featureinfo ).mqfeatureinfo({ 3 map: $( #map ), 4 contents: 5 6 7 }); Volker Mische (@vmische) FOSSGIS 2012 Dessau 30/ 33
MapQuery Beispiel: Widgets 1 $(.zoom ).mqzoombuttons({map: map}); 2 $( #featureinfo ).mqfeatureinfo({ 3 map: $( #map ), 4 contents: function(feature) { 5 6 } 7 }); Volker Mische (@vmische) FOSSGIS 2012 Dessau 30/ 33
MapQuery Beispiel: Widgets 1 $(.zoom ).mqzoombuttons({map: map}); 2 $( #featureinfo ).mqfeatureinfo({ 3 map: $( #map ), 4 contents: function(feature) { 5 return <p> +feature.properties.name+ </p> ; 6 } 7 }); Volker Mische (@vmische) FOSSGIS 2012 Dessau 30/ 33
Projekte und Lizenzen Apache Lizenz, Version 2.0: Couchbase/TouchDB: http://www.couchbase.com/ GeoCouch: https://github.com/couchbase/geocouch/ MIT MapQuery: http://mapquery.org/ Volker Mische (@vmische) FOSSGIS 2012 Dessau 31/ 33
Vielen Dank! Volker Mische (@vmische) FOSSGIS 2012 Dessau 32/ 33
Kontaktdaten Website: http://vmx.cx/ Github: https://github.com/vmx/ IRC: vmx @ freenode Email: volker@couchbase.com Jabber: volker@vmx.cx Twitter: @vmische Volker Mische (@vmische) FOSSGIS 2012 Dessau 33/ 33