\documentclass{beamer} %packages \usepackage[latin1]{inputenc} \usepackage{minted} \usepackage{graphicx} \usepackage{hyperref} \usepackage[english]{babel} \hypersetup{urlcolor=red,colorlinks} \definecolor{bg}{rgb}{0.95,0.95,0.95} \newminted{xml}{fontsize=\tiny} \newminted{javascript}{fontsize=\tiny} \usetheme{default} \title[OSM-Projekt - What is...]{OSM-Projekt - An introduction into OpenStreetMap} \author{Philipp Borgers} \institute{Institute for Computer Science, Free University Berlin} \date{15.4.2011} \begin{document} \begin{frame} \titlepage \end{frame} \begin{frame}{Introduction} \begin{itemize} \item Huge database of geo data \item Open Data, licenced under cc (ODbL?) \item Everybody can contribute, it's like an wiki \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{Community} \begin{itemize} \item \href{http://wiki.openstreetmap.org/wiki/Develop}{Developer wikipage} \item \href{http://lists.openstreetmap.org/listinfo}{Mailinglists (dev@lists...)} \item \href{irc://irc.oftc.net/#osm-dev}{\#osm-dev} \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{data types - node} \begin{itemize} \item Id, Longitude, Latitude \item Set of key/value pairs (tags) \end{itemize} \begin{xmlcode} \end{xmlcode} \end{frame} \begin{frame}[fragile] \frametitle{data types - way} \begin{itemize} \item Id and common attributes \item List of all node id's that make up the way \item Last node == first node (optional, closed way) \item A set of key/value pairs (tags) \end{itemize} \begin{xmlcode} \end{xmlcode} \end{frame} \begin{frame}[fragile] \frametitle{data types - relation} \begin{itemize} \item Id and common attributes \item A set of key/value pairs (tags) \item An ordered list of primitives (members) with associated role attribute \item A member consists of a type (node, way, relation), Id and a role attribute \end{itemize} \begin{xmlcode} \end{xmlcode} \end{frame} \begin{frame}[fragile] \frametitle{data types - tag} \begin{itemize} \item A key/value pair \item They are everywhere, you can't hide \end{itemize} \begin{xmlcode} \end{xmlcode} \end{frame} \begin{frame}[fragile] \frametitle{data types - more on data types and elements} \begin{itemize} \item \href{http://wiki.openstreetmap.org/wiki/Data_Primitives}{Data primitives} \item \href{http://wiki.openstreetmap.org/wiki/Elements}{OSM elements} \item \href{http://wiki.openstreetmap.org/wiki/API\_v0.6}{OSM API 0.6} \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{database - schema (tables)} \begin{itemize} \item nodes \item ways \item relations \item users \item way\_nodes \item relation\_members \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{database - nodes table} \begin{tabular}{| l | c | r |} \hline id & bigint & not null \\ \hline version & integer & not null \\ \hline user\_id & integer & not null \\ \hline tstamp & timestamp without time zone & not null \\ \hline changeset\_id & bigint & not null \\ \hline tags & hstore & \\ \hline geom & geometry & \\ \hline \end{tabular} \end{frame} \begin{frame}[fragile] \frametitle{XAPI} \begin{itemize} \item Database frontend used to retrieve node, ways and relations \item XPATH like requests \item Returns xml (osm xml schema) \item \href{http://wiki.openstreetmap.org/wiki/Xapi}{Wiki page} \item OSM community needs a good implementation \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{XAPI - Request format} \begin{itemize} \item api/0.6/node[predicate] \item api/0.6/way[-6,50,2,61] \item api/0.6/relation[name=U3] \item api/0.6/*[-6,50,2,61][name=U3|U4|U5] \item api/0.6/*[name=*] \item api/0.6/node[amenity|leisure=golf\_curse] \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{XAPI - Implementations} \begin{itemize} \item \href{http://xapi.openstreetmap.org/scripts/}{G.TM implementation} \item \href{https://github.com/iandees/xapi-servlet}{Java implementation} \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{node.js} \begin{itemize} \item \href{http://nodejs.org/}{node.js} is asynchronous javascript \item Event based \item Written on top of the \href{http://code.google.com/p/v8/}{V8 Javascript Engine} (Virtual machine) \end{itemize} \end{frame} \begin{frame}[fragile] \frametitle{Simple example - echo server} \begin{javascriptcode} var net = require('net'); var server = net.createServer(function (socket) { socket.write("Echo server\r\n"); socket.pipe(socket); }); server.listen(8124, "127.0.0.1"); \end{javascriptcode} \end{frame} \begin{frame}[fragile] \frametitle{Simple example - event} Listen for events \begin{javascriptcode} server.on('connection', function(stream) { console.log('someone connected!'); }); \end{javascriptcode} Emit events \begin{javascriptcode} server.emit('connection',socket); \end{javascriptcode} \end{frame} \begin{frame}[fragile] \frametitle{Licence} \begin{center} \includegraphics[scale=0.25]{./cc.png} \end{center} \begin{center} \href{http://creativecommons.org/licenses/by/3.0/}{Attribution 3.0 Unported (CC BY 3.0)} \end{center} \end{frame} \begin{frame}[fragile] \frametitle{more} \begin{itemize} \item \url{https://github.com/slomo/osm-spline-xapi} \item \href{https://lists.spline.inf.fu-berlin.de/mailman/listinfo/xapi}{XAPI (course) mailinglist} \item \url{http://osm.spline.de} \end{itemize} \end{frame} \end{document}