Geospatial Ruby
This is a modal window.
Das Video konnte nicht geladen werden, da entweder ein Server- oder Netzwerkfehler auftrat oder das Format nicht unterstützt wird.
Formale Metadaten
Titel |
| |
Serientitel | ||
Anzahl der Teile | 69 | |
Autor | ||
Lizenz | CC-Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland: Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben. | |
Identifikatoren | 10.5446/17591 (DOI) | |
Herausgeber | ||
Erscheinungsjahr | ||
Sprache |
Inhaltliche Metadaten
Fachgebiet | ||
Genre | ||
Abstract |
|
1
4
5
6
8
9
10
13
14
15
19
22
23
24
27
29
33
35
37
38
39
40
41
42
44
48
50
53
54
56
57
61
63
64
67
69
00:00
ComputeranimationDiagramm
00:18
Ruby on RailsObjektorientierungSpeicherbereinigungBaumechanikGeometrieUbiquitous ComputingDatei-ServerGeometrieRuby on RailsInternetJavaScriptWrapper <Programmierung>SpeicherbereinigungDatentypFaserbündelSpielkonsoleObjekt <Kategorie>Textur-MappingSystemplattformFolge <Mathematik>SkriptspracheGRADEPriorität <Informatik>Computeranimation
06:24
BaumechanikCodeKoordinateniPhoneParametersystem
07:39
BaumechanikStrich <Typographie>STYLE <Programmierumgebung>KoalitionComputeranimation
09:08
BaumechanikGeometrieTkKoordinatenPolygonArcGISRuby on RailsAnalysisSQLCodePolygonImplementierungObjekt <Kategorie>KoordinatenMeterTkEnergieMessage Transfer AgentBerechnungIntelAbfragePunktArcGISRuby on RailsEin-AusgabeGeometrieErweiterungServerGruppoid
15:00
JavaScriptSoftwaretestGeometrieWeb-ApplikationUmfangSchnittstelleImplementierungWeb-AnwendungRuby on RailsAnwendungssoftwareGEOS <Betriebssystem>FunktionalKeller <Informatik>Vorlesung/Konferenz
20:07
BaumechanikSchnittstelleWeb-ApplikationParametersystemRuby on Rails
20:25
Mailing-ListeRuby on RailsKurveVorlesung/Konferenz
21:05
Computeranimation
Transkript: Deutsch(automatisch erzeugt)
00:07
Guten Tag zusammen. Ich will euch heute ein bisschen was über Geospatial Ruby erzählen. Ganz zu Anfang, Ruby is awesome. Wirklich, Ruby ist wirklich super. Jeder von euch sollte mehr Ruby schreiben.
00:22
Ich meine wirklich, ihr solltet mehr Ruby schreiben. Weil ich schreib schon genug Ruby, aber ihr solltet wirklich mehr Ruby schreiben. Aber warum Ruby? Wer von euch kennt überhaupt den Ruby? Wer hat schon mal was mit Ruby geschrieben? Ok, alles klar.
00:41
Dann hab ich alles richtig gemacht, weil das hab ich mir nämlich erwartet. Ganz zu Anfang, Ruby ist wirklich einfach zu erlernen. Und natürlich ist Ruby auch fun. Also Ruby macht wirklich Spaß. Denn Ruby ist angenehm zu schreiben. Und Ruby ist für Developer-Happiness gemacht. Es ist wirklich sehr angenehm zu schreiben, sehr einfach zu verstehen.
01:02
Und ihr werdet Spaß daran haben, Ruby zu schreiben. Ruby hat auch eine sehr aktive Community, die wirklich sehr viel macht. Es gibt sehr viele Tutorials im Internet. Es gibt sehr viele Videos. Es gibt tausend Seiten, wo man was nachlesen kann, wie man ganz einfach Ruby erlernen kann.
01:20
Ruby hat auch eine sehr einfache Syntax. Ich zeig gleich noch ein paar Beispiele. Und die Sachen, die ich über Mapping erzählen werde, werden es hoffentlich ein bisschen erklären. Und Ruby hat natürlich auch Ruby-Gems und Bundler. Das sind Paket-Hosting und Paket-Manager, die das wirklich sehr einfach machen, Bibliotheken in Ruby einzubinden.
01:42
Und ganz zuletzt, Ruby hat natürlich auch Rails. Wer es nicht kennt, aber Ruby und Rails ist das Web-Framework, das einfach super ist, super einfach zu bedienen. Das solltet ihr einfach auschecken. Wenn ihr es noch nicht gemacht habt, guckt es euch wirklich an. Aber was ist eigentlich dieses Ruby?
02:01
Wo kommt es denn her? Und was hat es überhaupt auf sich? Kurz zu den Konzepten. Ruby ist objektorientiert. Ruby ist dynamisch. Und ganz wichtig für alle Leute, die zum Beispiel aus dem C-Bereich kommen, Ruby hat automatische Speicherbereinigung. Das heißt, ihr müsst euch nicht um den ganzen Kram kümmern, den ganzen Kram, der dazu gehört.
02:26
Ich weiß, dass es bei den meisten dynamischen Scriptsprachen auch nicht der Fall ist, aber man sollte das dazu sagen. Und ganz wichtig, alle Datentypen in Ruby sind Objekte. Alles in Ruby ist ein Objekt und darauf kann man alles machen.
02:41
Hier noch ganz einfaches Beispiel unseres Hello World. P ist abgekürzt für puts und schreibt einfach auf die Konsole Hello World. Aber warum bin ich heute hier? Ruby und Geospatial. Wir sind ja alle hier Geospatial-Leute. Ich weiß zwar, dass heutzutage es wahrscheinlich nicht mehr in ist, über andere Pro-Mir-Sprachen als JavaScript zu sprechen,
03:02
weil JavaScript ist ja das Neue, wo wir alle Geo mitmachen wollen. Aber trotzdem ist Ruby eine sehr super Sache, die man sich anschauen sollte. Hier ganz kurz, wer benutzt eigentlich Ruby im Geo-Umfeld? Da haben wir zum Beispiel Esri, vor allen Dingen Esri in Portland und Esri in Washington, die sehr viel mit Ruby machen.
03:21
Hauptsächlich sind es zwar aufgekaufte Firmen, die Esri sich eingekauft hat, die Ruby gemacht haben, aber da kommt immer mehr zusammen, was Ruby und Esri angeht. Dann KartoDB, die komplette KartoDB-Plattform ist Rails eigentlich. Jeder, der schon mal KartoDB genutzt hat, wird merken, wie schön, schnell und super das ist.
03:43
Wir haben es aufgebaut auf Rails. ProPublica ist zwar jetzt nicht unbedingt geobezogen, sondern halt eine Art Zeitung in den USA, aber die machen sehr viel mit Ruby und davon habe ich auch ein Beispiel. Und als letztes Special Networks, sehr große Firma, die auch sehr viel mit Ruby machen.
04:07
Dann die nächste einfache Frage, was war meistens zuerst? War zuerst das Ruby da oder war zuerst das Geo da? Von den Leuten, die schon mal mit Ruby hier was gemacht haben, kurz mal Show of Hands, war erst das Ruby oder erst das Geo?
04:21
War erst das Ruby? Von wem war zuerst das Ruby da? Einer, immerhin, okay, gut. Von den anderen war zuerst das Geo und das Ruby kam dann später, alles klar. Die Umfrage letztes Mal hat eigentlich was ganz anderes ergeben, denn zuerst war meistens das Ruby und das Geo kam erst später dazu, weil die Leute sich in Ruby verliebt hatten und gesagt haben, Ruby ist einfach eine so geile Sprache, mit der möchte ich mehr machen.
04:44
Und ich bin jetzt in diesen Geo-Bereich reingerutscht, aber ich möchte eigentlich nicht auf die Ruby als Sprache verzichten, sondern ich möchte das einfach weiter benutzen. Und ja, was ihr dazu sagt, okay, das ist jetzt ein bisschen schwierig, weil ihr noch nicht mit Ruby und mit Geo gemacht habt, aber ja, das überspringen wir einfach.
05:06
Was ich euch heute zeigen will, sind eigentlich drei wichtige, also in meinen Augen wichtige Bibliotheken für den Geo-Bereich für Ruby. Da wäre zum einen Simplertiles, ein einfacher Teilserver für Ruby.
05:21
Dann Terraformer Ruby, eine Bibliothek, mit der man einfach mit Geo-Jason und Argus-Jason arbeiten kann. Und Argeo, das ist so die Allzweckwaffe im Ruby-Bereich, was Geo betrifft. Fangen wir an mit Simplertiles. Simplertiles ist von ProPublica entwickelt worden, ist open source, kann sich jeder angucken.
05:46
Und was Simplertiles eigentlich ist, ist ein Ruby-Wrapper für eine C-Bibliothek, nennt sich Simplertiles. Das ist auch eine sehr gute Eigenschaft von Ruby, man kann C-Bibliotheken recht einfach einbinden. Und Wrapper dafür schreiben, die dann auf C basieren, also die Bibliotheken basieren
06:05
auf C, man schreibt Wrapper, die dann halt in Ruby einfach benutzt werden können. Denn Ruby basiert eigentlich auf C. Genau, also es ist eine C-Bibliothek für einen einfachen Teilserver. Der Kyro benutzt auch eine C-Bibliothek, die man sich einfach anschauen kann.
06:26
Und jetzt hier ein kleines, einfaches Beispiel für einen Teilserver in Ruby. Ich möchte vielleicht gar nicht so viel auf die einzelnen Punkte eingehen, aber ich finde, man sieht sehr deutlich, dass man in nur zehn Zeilen Code einen Teilserver
06:44
aufsetzen kann, was halt normalerweise sonst viel länger dauert und mit sehr viel Aufwand verbunden ist. Was hier benutzt wird, hier wird einfach ein Shapefile benutzt und dieses Shapefile wird dann gerendert und als Teilserver zur Verfügung gestellt. Unten drunter ist das Preview, das ist ein Live-Preview.
07:02
Ich habe Simpler-Teils auf einem Docker-Container hier lokal auf meinem PC laufen und so wird es hier direkt mit dem Iframe eingebunden. Wenn ihr das vielleicht seht, hier gibt es M-Slippy, so ungefähr in der Mitte. Das ist einfach nur eine Funktion innerhalb von Simpler-Teils, die die Koordinaten, also die X
07:31
- und Y-Koordinaten und den Z-Parameter nimmt und daraus dann ein einfaches Teil erstellt. Das ist halt genau da, wo sozusagen die Magic passiert. Das Ergebnis von so einem Teilserver ist halt ein einfach Teils, also ganz normale Images, die man
07:47
halt dann über z.B. Leaflet, gerade im ersten Beispiel später auch Openlayers ganz einfach einbinden kann. Was auch total super ist in Simpler-Teils ist, dass man die Projektion mit einer einfachen Zeile ändern kann.
08:02
Man nimmt einen Shapefile, der in einer Projektion war und kann ihn ganz einfach umkomitieren in eine andere Projektion. Das ist das Ergebnis und das war jetzt nicht so ersichtlich. Leider habe ich noch ein bisschen oder ich oder Simpler-Teils ein bisschen Probleme mit der
08:24
Generierung oder mit der Anzeige zumindest, dass jetzt auf Openlayers, also eigentlich sollte das funktionieren, dachte ich. Aber das tut es noch nicht ganz. Ich muss mit denen nochmal sprechen und schauen, ob da irgendwas da vielleicht für Probleme sein könnte. Man sieht, dass die Teils ja so ein bisschen überlappen, also da sieht man es vor allem.
08:45
Aber ich denke nicht, also das sah halt so aus oder sieht so aus, ob das eigentlich wirklich einfach wäre. Das ist bestimmt nur eine kleine Konfiguration, die ich irgendwo vergessen habe, würde ich vermuten. Was auch sehr einfach geht, ist die Änderung von Stilen. Man kann ganz einfach die Styles der Ausgabe ändern, zum Beispiel einfach den Stroke ändern, das Gewicht des
09:06
Strokes ändern oder halt auch den Filter zu ändern und das wäre zum Beispiel dann das Preview davon. Mit Dreizeilencode direkt schön die Teils geändert. Aber Simpler-Teils kann noch sehr viel mehr und es ist auf jeden Fall ein Grund mal sich das anzuschauen, mal zu gucken, was damit möglich ist,
09:26
um einen einfachen, schnellen Teilserver für sich zu erstellen. Die zweite Bibliothek, die ich euch präsentieren will, ist Terraforma Ruby. Ja, Terraforma, das ist genau das, was es schon sagt.
09:42
Das ist eine Implementierung der JavaScript-Bibliothek Terraforma JS, die von Esri entwickelt wurde und die von Esri Portland portiert wurde auf Ruby und sich inzwischen auch mehr zu mehr entwickelt als nur ein normaler Port von Terraforma, sondern das ist ein Toolkit für das Arbeiten mit Geojson in Ruby sein.
10:05
Kurz ein paar Features. Man kann einfache geometrische Operationen auf Geojson-Sachen machen, zum Beispiel die Distanz berechnen, ob das Intersects, ob das innerhalb sein ist oder solche Sachen. Und was natürlich sehr super ist, vor allem, wenn man viel mit ArcGIS Server arbeitet,
10:22
man kann ganz einfach ArcGIS JSON parsen und transformieren und daraus dann wieder Geojson machen. Auch hier ein super einfaches Beispiel. Hier habe ich zwei Koordinaten erstellt, ein einfaches Array, dann 2C gecalled, dass das in ein Terraforma-Coordinate umwandelt
10:44
und diese beiden, von den beiden kann ich die Distanz mit einem einfachen Call zu Distance2 berechnen. Und als Ergebnis kommt die Distanz in Metern zurück, sind ungefähr 400 Kilometer von hier nach Berlin. Und das ist halt wirklich ein super einfaches Beispiel, wie man mit Terraforma aus zwei Koordinaten die Distanz berechnen kann.
11:06
Aber man kann das Ganze auch mit Geojson machen, das heißt man nimmt sich einfach ein Geojson. Hier habe ich zwei Geojson-Punkte, die ich in Terraforma gepasst habe, daraus entstehen Terraforma-Punkte.
11:20
Und von diesen Punkten kann ich wiederum die Distanz berechnen. Das Ganze geht natürlich aber auch für Polygone. Das heißt, ich nehme auf einer Seite ein Geojson-Punkt und auf der anderen Seite ein Geojson-Polygon und kann von den beiden die Distanz wiederum berechnen.
11:42
Ich bin mir nicht ganz sicher, welchen Punkt es dann nimmt aus dem Polygon. Ich meine, dass es irgendwie den nächsten Punkt wirklich berechnet. Es kann aber auch sein, dass es einfach nur die Mitte davon nimmt. Da bin ich noch nicht tiefer eingestiegen in die Berechnung.
12:04
Das Ganze kann man auch machen, ob ein Punkt in einem Polygon enthalten ist. Auch da ganz einfach nur Geojson parsen und dann mit Within fragen, abfragen, ist das enthalten oder ist das nicht enthalten.
12:21
Und natürlich, und das ist, finde ich, eines der coolsten Features, ist, ich kann ein Argus-Json nehmen, das in Terraforma reinpacken und bekomme daraus ein Geojson. Hat mir schon ein paar Mal das Leben gerettet. Da muss ich nicht tausend Sachen schreiben, um das umzuwandeln, sondern das war sehr einfach zu machen.
12:42
Der andere Weg geht natürlich auch. Ich kann ein Geojson nehmen und das ganz einfach in Argus-Json umwandeln. Aber Terraforma kann noch viel, viel mehr als nur das, aber ich wollte heute nicht alles dazu erzählen, sondern ich wollte nur ein bisschen Input geben. Schaut euch das an, das ist auf jeden Fall sehr spannend.
13:03
Die dritte Bibliothek ist Argyo von Daniel Azuma entwickelt, ist schon ein bisschen älter, aber die Bibliothek könnte einen ganzen Tag füllen. Das möchte ich heute nicht machen, aber Argyo ist vor allem für das Arbeiten mit Rails gedacht.
13:22
Man kann sehr einfach Argyo in Rails integrieren und hier einen Überblick aus der README, der Argyo Library, was man damit machen kann. Es kann alles das, was Terraforma auch kann und dazu noch mit WKT umgehen und darüber hinaus hat es mehrere Extensions.
13:43
Es gibt zum Beispiel eine PostGIS-Extension, sodass man mit ActiveRecord, das ist der Datenmapper für Rails, ganz einfach Abfragen machen kann auf Geo-Objekte mit Rails direkt integriert. Man muss dann keinen PostGIS-Query schreiben, sondern man kann ganz einfach sagen, alles
14:05
klar, dieses Element ist ein Polygon zum Beispiel und darauf möchte ich Operation ausführen. Man muss nicht erst den ganzen PostGIS-Query schreiben. Auch für das Lesen und Schreiben von Esri Shapefiles ist Argyo sehr geeignet,
14:20
dafür gibt es eine eigene Extension und das gleiche natürlich auch mit Geojson. Dazu hat Daniel ein neunteiliges Tutorial geschrieben, das zeigt schon die Fülle, die eigentlich damit möglich ist, die ich heute nicht alles präsentieren kann. Aber es ist auf jeden Fall ein Vorteil, sich das mal anzugucken, da ein bisschen durchzugehen.
14:45
Es ist schon ein bisschen älter, die Bibliothek ist schon ein bisschen älter, aber inzwischen nimmt sie wieder ein bisschen mehr Fahrt auf und wird auch Erweiterungen dazu geben. Lasst uns gerne über Geo und Ruby diskutieren, dafür bin ich hier, heute zwar nicht mehr
15:00
sehr lange, aber ich würde mich freuen, mit dem einen oder anderen ins Gespräch zu kommen. Danke. Danke Mila. Gibt es Fragen? Ich habe immer. Du hast am Anfang gesagt, wir sollen Ruby machen. Warum?
15:24
Ja, es gibt, wenn man zum Beispiel jetzt Node.js nimmt oder die neue Trends, da gibt es wirklich, ich würde mal sagen, Killer Features mit Verarbeitung von mehreren angehenden Requests, funktionale Sprache, also da gibt es wirklich unique Features, die mit der Sprache kommen oder mit dem Verarbeitungsmodell kommen.
15:44
Und das kann ich sehr gut nachvollziehen. Ich komme eigentlich aus der Java -Wild, ich mache auch relativ viel JavaScript und da sitze ich da und denke, gut, das war zwar nett, dass du das gesagt hast, aber warum sollte ich das jetzt machen? Das habe ich jetzt nicht wirklich mitbekommen. Kannst du da vielleicht ein paar Sätze dazu sagen?
16:04
Okay. Eigentlich hauptsächlich, weil die Sprache wirklich sehr angenehm ist. Also ich weiß, dass ich keinen von euch überzeugen kann. Dafür gibt es einfach zu viele Möglichkeiten, mit denen man heutzutage Geo machen kann. Ich will einfach nur ein neues Beispiel aufzeigen, dass es auch was anderes gibt, außer dem, worüber alle sprechen. Alle sprechen über JavaScript, über Node.js und was mit Python alles geht.
16:27
Klar, ich möchte einfach nur zeigen, es gibt auch was anderes, was sehr entwicklerfreundlich ist. Also Ruby ist wirklich eine super Sprache, mit der man sehr schön was machen kann. Und Ruby ist eine sehr testgetriebene Entwicklungsumgebung und Community, der sehr viel Wert auf Tests legen.
16:44
Und das vermisse ich ein bisschen bei anderen Sprachen, was jetzt ein bisschen mehr entkommen ist, klar. Aber Ruby war von Anfang an, wir machen auf jeden Fall Tests und Tests ist das Wichtigste. Aber ich kann keinen von euch überzeugen. Es gibt kein Das-Killer-Feature in Ruby, wo ich sagen würde, genau deswegen müsst ihr jetzt Ruby machen.
17:05
Das gibt es nicht. Es ist halt eher eine kleine Community, die, wie gesagt, ich wollte euch nur vorzeigen, was halt irgendwie geht. Ich will dich nicht davon überzeugen, du musst auf jeden Fall Ruby machen.
17:22
Na ja, alles gut, alles gut. Hi. Du hast R-Geo erwähnt. Ich kenne noch GeoRuby und Gedal, also auch als Bibliothek für Ruby.
17:45
Hast du die verglichen oder angeguckt, ob das eine mehr Features hat oder besser oder stabiler oder performanter? Ich habe sie mir angeschaut und ich fand, also R-Geo hat einfach viel mehr Umfang und eine viel bessere Integration mit Rails direkt.
18:02
Also wenn man halt Web-Anwendungen mit Rails bauen will und Geo-Sachen benutzt, dann ist R-Geo eigentlich für mich so der Weg zu gehen. Ich würde auch sagen, dass es mehr Features hat, aber so genau kann ich es nicht sagen.
18:24
Ja, vielleicht noch direkt ein Kommentar zu R-Geo oder R-Geo. Das hat eine komplette Geos-Anbindung und Geos ist im Grunde die C++-Implementierung von Simple Features und von der Java Topology Suite. Das heißt, ich habe alles, was ich aus der Welt kenne, WKT, WKB und sämtliche Optionen, die
18:47
in der Java Topology Suite definiert sind, eins zu eins auch wieder da, bloß wesentlich angenehmer zu programmieren. Das wäre ein Grund für R-Geo aus meiner Sicht. Danke. Okay, danke schön.
19:05
Ich hätte eine Frage. Mein Eindruck wäre jetzt so, oder ich weiß nicht, wie ihr das einsetzt, dass ihr damit eigentlich so eigenständige Anwendungen aufbaut. Jetzt hast du schon mal angedeutet, Ruby hat auch Rails. Kannst du vielleicht nochmal so umreißen, was jetzt so der Stack wäre, wenn ich sage, ich mache jetzt irgendwie einen bestimmten Webdienst,
19:25
oder ist das eher, dass ich damit eine Web-App baue und nicht so sehr eine Service-Schnittstelle definiere, kann ich auch APIs in Ruby schreiben und die dann über JavaScript ansprechen, kannst du da nochmal ein bisschen nun... Ja, klar. Also Rails ist hauptsächlich für wirklich Web-Anwendungen.
19:44
Also man kann damit auch einfach APIs machen, aber da gibt es andere Frameworks, wie zum Beispiel Sinatra. Das ist auch das Framework, was ich benutze habe, um den Simple-Tiles-Server zu machen. Das ist ein ganz einfaches Framework, mit dem du wirklich schnell APIs schreiben kannst. Ich kann nochmal eben das zurückgehen.
20:05
Hier mit dieser get-do. Damit habe ich einfach eine get-Schnittstelle erstellt und da kann man ganz einfach drauf zugreifen und mit den Parametern entsprechend was machen. Also das ist halt wirklich sehr schnell eine API aufzubauen. Und Rails ist mehr wirklich für Web-Anwendungen, wenn du halt sehr viel mit Datenmarken krampfmachst.
20:26
Und damit wir Ruby lernen können, vielleicht nur eine Frage, gibt es irgendwie bestimmte Community-Seiten, passiert alles auf Stack-Overflow oder welche Mailing-Liste muss ich mich anmelden? Also es gibt sehr gute Video-Tutorials, das nennt sich Railscast.
20:45
Das ist nicht nur um Rails, aber auch viel mit Rails. Und ansonsten auf RubyLang.org gibt es auch eine deutsche Version und da gibt es auch entsprechend Links und Tutorials. Prima, Dankeschön.