GeoPython Konferenz 2018

Bereits zum dritten Mal öffnete die Fachhochschule Nordwestschweiz (FHNW) ihre Tore zur GeoPython-Konferenz. Während dreier Tage trafen sich vom 7. bis 9. Mai Geo-Interessierte aus aller Welt in Muttenz, um über die neuesten Trends und Packages rund um Python zu diskutieren. Da wir bei EBP Python oft auch für Datenanalysen und die Arbeit mit Geodaten einsetzten, war ich für EBP dabei und möchte Ihnen einen Überblick über die Veranstaltung geben.

Räumliche Analysen mit GeoPandas

Martin Christen eröffnete die Konferenz ganz unkonventionell (und sehr sympathisch) mit einer rein analogen Ansprache ohne PowerPoint, Beamer und Co. sowie dem Versprechen, dass die GeoPython 2019 im brandneuen FHNW–Standort stattfinden werde. Pünktlich zum Beginn der ersten Workshops  war auf technischer Seite alles wieder bereit und schon stand eine schwierige Entscheidung an: Soll es der Workshop zur Datenanalyse mit GeoPandas werden oder jener zur Erstellung von QGIS-Makros mit PyQGIS?

Ich habe mich für GeoPandas entschieden und diese Wahl keineswegs bereut: Joris Van den Bossche führte nachvollziehbar und verständlich mittels Jupyter Notebooks durch die Funktionalitäten von Shapely, Pandas und GeoPandas. Insbesondere Coderinnen und Coder, die bereits mit der Programmiersprache R gearbeitet haben, werden das hier verwendete GeoDataFrame-Konstrukt wiedererkennen und schätzen. Dieses erlaubt es beispielsweise, räumliche Operationen nicht nur auf einzelne Objekte, sondern gleich auf alle Elemente einer Matrix anzuwenden. Der Workshop behandelte neben den möglichen räumlichen Operationen auch die Visualisierung der Resultate und gab einen guten Überblick über die Möglichkeiten von GeoPandas.

Der GeoPandas Workshop war gespickt mit Übungen zum selbst Programmieren. Die Verzahnung von Theorie- und Code-Blöcken gehört definitiv zu den Hauptvorteilen von Jupyter-Notebooks. Quelle: GeoPython 2018

Nachbarschaftsmatrizen als räumliche Alternative

GeoPandas begegnete den Teilnehmenden dann auch wieder beim Data Science Workshop am Nachmittag. Im Fokus stand dabei allerdings ein anderes Thema, nämlich PySAL. Dieses Package stellt diverse Methoden zur statistischen Auswertung und räumlichen Analyse zur Verfügung. Für Letzteres nutzt PySAL, anders als GeoPandas, Nachbarschaftsmatrizen. Über solche Matrizen wird festgehalten, welche Art von räumlicher Beziehung besteht und wie stark sie ausgeprägt ist.

Beispielsweise lässt sich ausgehend von einem Punktdatensatz die Nachbarschaft mittels Berechnung der Thiessen-Polygone bestimmen, wobei die Distanz der Punkte untereinander auch gleich die Gewichtungsmatrix ergibt. Je nach gewähltem Kriterium resultieren dabei andere Nachbarschaften. Das Rook-Kriterium beispielsweise sieht vor, dass zwei Polygone sich mindestens eine Kante  teilen müssen, um als Nachbarn zu gelten (vgl. Rook’s Case in Rasteranalysen). Auf den Nachbarschaftsmatrizen lassen sich räumliche Analysen wie beispielsweise eine Kernel Density Estimation (KDE) sehr schnell und ressourcenschonend berechnen.

Um die Nachbarschaftsmatrix eines Punkt-Datensatzes zu erstellen, werden Thiessen Polygone gebildet (links). Rechts ist die Nachbarschaftsmatrix grafisch dargestellt. Quelle: Levi John Wolf und Serge Rey auf github.

Big Data leicht gemacht

Ein weiterer Schwerpunkt der GeoPython war Machine Learning. Anhand verschiedener Projekte wurde demonstriert, wozu neuronale Netze bereits fähig sind. Beispielsweise um Verspätungen im öffentlichen Verkehr vorherzusagen. Anhand der Echtzeitpositionen der Busse, dem Soll-Fahrplan und weiteren Variablen wie Wetter und Ferienkalender wurde ein Modell trainiert, das als Entscheidungsgrundlage für das Busunternehmen dienen soll. Damit sollen unter anderem die Kundeninformation verbessert oder Extrabusse bei Bedarf möglichst ökonomisch eingesetzt werden.

Ein anderes Projekt verwendete Machine Learning im klassischen Anwendungsfall der Bilderkennung, um zum Klettern geeignete Felswände in unbekannten Gebieten zu entdecken. Wie in den anderen Machine Learning Projekten wurde auch hier eine Kombination aus Pandas, TensorFlow und Keras eingesetzt. Das manuell erstellte Trainingsdatenset wurde in TensorFlow geladen, um den Klassifikator zu trainieren, der anschliessend Luftbildern einen «Klettergebiet» Score zugewiesen hat. Auch wenn der Referent noch keine Gelegenheit fand, sämtliche potenziellen Klettergebiete selbst zu «verifizieren», waren die bisherigen Ergebnisse bereits vielversprechend.

Einen sehr anschaulichen Beitrag zum Themenblock bildete der Vortrag von Google, bei dem die verschiedenen hauseigenen Machine Learning APIs vorgestellt wurden. Anstatt eigene Modelle zu trainieren, kann durch die APIs auf fixfertig trainierte und spezialisierte Modelle zurückgegriffen werden. Diese umfassen beispielsweise Textanalysen, bei denen sowohl der Inhalt als auch die Stimmungslage ausgewertet werden. Auch Google Translator basiert seit einiger Zeit auf einem neuronalen Netzwerk, was gegenüber dem früheren statistischen Modell eine deutliche Verbesserung beim Übersetzen von ganzen Sätzen gebracht habe. Ein besonderes Augenmerk legte der Referent auf die Vision API zur Bilderkennung. So demonstrierte er sehr eindrücklich dessen Fähigkeiten, indem er Fotos vom Eiffelturm in Paris und von dessen Replikat in Las Vegas auswerten liess. Dass der Eiffelturm als solches erkennt wurde, war zugegebenermassen nicht allzu überraschend. Dass aber das Replikat zuverlässig in Las Vegas verortet wurde, obwohl keine anderen baulichen Erkennungsmerkmale im Hintergrund zu sehen sind, war hingegen erstaunlich.

Dies ist nicht der Eiffeltum in Paris, sondern dessen Nachbildung beim Paris Hotel and Casino in Las Vegas. Kein Problem für Google Vision. Quelle: Laurent Picard auf Speaker Deck.

Wissensdurstige aus aller Welt

Dies war mein erster Besuch an der GeoPython. Was mich rückblickend am Meisten erstaunt hat, war, wie international diese Konferenz ist. Nicht nur die Vortragenden kamen aus aller Welt, auch das Publikum war geografisch bunt gemischt. Wie ich in persönlichen Gesprächen mit auswärtigen Teilnehmenden erfahren habe, kommt dies nicht von ungefähr: Im Vergleich zu anderen Python-Veranstaltungen schätzen sie vor allem die sachbezogenen Präsentationen und den Austausch mit gleichgesinnten Fachleuten (ein Faktor, der ja auch das GeoBeer attraktiv macht). So verwundert es dann auch nicht, dass die GeoPython sich ein solches Renommee erarbeitet hat – ziemlich beachtlich für eine erst dreijährige Veranstaltung!

Die GeoPython 2018 endete nach vielen lehrreichen Präsentationen und interessanten Gesprächen. Ich freue mich jedenfalls schon auf die GeoPython 2019.

2016 Esri Partner Conference and Developer Summit

Traditionally two members of #TeamEBP visit Esri’s annually DevSummit in order to hear the latest from the world of ArcGIS – and beyond. This year, my colleague Sarah Schöni and I had the chance to fly to California. In this post, we’d like to summarize the highlights from our point of view:

  • The overall theme: „Web GIS is a System of Engagement“
  • The Keynote: Douglas Crockford
  • The State of Esri Technology
  • Python is now a first class citizen in Esri’s world
  • What else is new and cool? Insights and Vector Tiles!
  • One more thing…
Sarah and me with two friendly developers…
Sarah and I with two friendly developers…

The overall theme: „Web GIS is a System of Engagement“

Esri usually has an overall theme that they want to get across, such as mobile in 2011, online in 2012 or platform in 2014. This year’s theme „engagement“ is based on Geoffrey Moore’s paper on „Systems of Engagement and the Future of Enterprise IT“: In the past, organizations have built transactional tools and systems specifically designed for their business processes. The systems are mostly static, very accurate, mostly complete and tightly controlled – they are systems of records. With the advent of consumer IT, we’re moving closer to systems of engagement, where the focus is on interaction, collaboration, openness and immediate answers.

Esri has transferred Moore’s theory of systems of engagement to GIS: They use the term „Web GIS“ as a synonym for a geo-information system of engagement: In this sense, a Web GIS is built on distributed servers, web clients, several focussed apps and it provides an open, real-time environment for engagement in your organization. If you are interested, you can read Jack Dangermond’s post about Esri’s vision.

Slide for WebGIS as a System of Engagement
Slide for System of Engagement

The Keynote: Douglas Crockford

One highlight of a conference is the keynote and this year we were fortunate to be able to listen to Douglas Crockford who is one of the leading figures in the development of the JavaScript language. His keynote was both entertaining and insightful. Although my main programming language of choice is not JavaScript, I highly enjoyed his talk. You can re-watch the keynote here. One highlight was the comparison between the relationship of Java and JavaScript and the relationship of Star Trek and Star Wars:

java-js-startrek-starwars

Of course, JavaScript has to be Star Wars!

The State of the Esri Technology

It seems that Esri’s server technology has reached maturity. ArcGIS for Server consists of two core components: the backend (the actual ArcGIS server software) and the frontend (the so-called Portal for ArcGIS). The backend has been around for nearly a decade (anyone remembers 9.0?) and the frontend is basically a self-hosted version of ArcGIS Online.

Currently, Esri is in a transition phase for three important technology components, namely Desktop, Runtime and JavaScript API:

  • Desktop: ArcGIS Pro has been announced 2 years ago and is now in version 1.2. It is close to becoming mainstream, but Esri stresses that ArcMap – the long-running desktop solution – will continue to be developed and supported for the next 10 years. However, new features (like generation of vector tiles) are unlikely to be developed for the „old“ platform.
  • Runtime: For developing independent GIS applications, ArcGIS Engine was the go-to solution in Esri’s world. With ArcGIS Runtime and the announcement of the Quartz architecture, there is now a new architecture to depend on in the future. At the time of writing, there is no final release yet (though beta versions for mobile are available). It is expected that versions for iOS and Android will be released in the second quarter, while the other versions (.Net, Tamarin, Java, Qt) will be released in the Q3.
  • JavaScript API: The ArcGIS JavaScript API is currently in version 3. I always recommend developers to have a look at the sample code page to get a feel of what the API can do for them. There is a lot to explore, but one thing you might be missing in version 3 is 3D (no pun intended). Last month, we’ve already written on the upcoming version 4 which handles 2D and 3D equivalently and allows to easily switch between the two dimensions while writing the code. Additionally, the API calls are much simpler now – with the drawback that older code probably has to be rewritten. For this reason I think it is more than a change in version numbers, but actually a similar big transition as we experience with Desktop and Runtime. Again, I recommend to have a look at the sample pages for the beta version to get a feel of what can be done now and in the future. The nice Esri folks at the DevSummit told me that there will be a comparison page between the functionalities of the two API versions, so stay tuned for more info. Update 2016-05-09: The page is now available and very comperehensive.

My recommendation regarding the transition of the three Esri components mentioned above: For every new project, you now have to carefully choose between the old and the new technology. There is no general advice on what is best, because it depends on the requirements of your project. If in doubt, you may consider to ask us to help you out ;-).

Python is a first class citizen in the Esri world

Talking about migration: Python has been recommended as your first option for extending ArcGIS platform functionalities. One reason is that migrating Python code from ArcMap to ArcGIS Pro is much simpler than migrating .Net code, because the ArcPy library has not changed much (except arcpy.mapping and of course some necessary adaptions due to the shift from Python 2.x to Python 3.x). So, to quote an Esri staff member: „Use more Python and less ArcObjects“.

But there was a lot more on Python, like ArcGIS integration with the packaging manager Conda and the outlook that Jupyter notebooks (formerly known as IPython notebooks) will be part of the ArcGIS platform (probably late 2016, maybe early 2017). I’m quite excited about the Jupyter integration, because then you may edit, explore and share your ArcGIS Python sessions and even take advantage of the power of SciPy, pandas and other great Python modules. Unfortunately, there weren’t too many details available on this.

ipython-arcgis
A screenshot of an ArcGIS Jupyter notebook.

What else is new and cool? Insights and Vector Tiles!

Last, but not least, we want to talk about two new cool things that have been unveiled at this year’s DevSummit:

  • Insights for ArcGIS: This demonstration was the most impressive one and was much talked about during the conference: It is basically „GIS for Data Scientists“. Just have a look at the product page or watch the 8-minute video and you get a glimpse of how easy GIS can be: Just drag-n-drop a county outline on a map of points and you get an aggregated view. Or select a slice of a histogram and the corresponding features in the map as well as on a scatter plot are highlighted.
  • Vector Tiles: Vector tiles have been announced last year, but now you can generate them from ArcGIS Pro and publish them directly on your ArcGIS Portal. At least with vector tiles, the old saying „Raster is faster, but vector is corrector“ does not hold anymore: Publishing the entire world as vector tiles takes 8 hours on a desktop machine (with 16 GB RAM and SSD) and consumes about 13 GB of disk space. Compare this to weeks of processing and dozens of terabytes of disk space for traditional raster tiles. As Esri adopted the MapBox specification for vector tiles, the tiles should eventually be consumable by non-Esri clients (and also non-Esri tiles by ArcGIS clients). But these setups are apparently work in progress and may yield unexpected results at the moment.

One more thing

Where to go from here? I recommend to have a look at the presentation videos that are already published on Esri’s video portal, for example start with the ArcGIS platform overview.

But there is one more thing and a personal note: I would like to plug my lightning talk that I gave during the DevSummit. It was about a topic, that I am planning to expand on this blog in the future:

Bots!

Stay tuned…