We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Geospatial Go

00:00

Formal Metadata

Title
Geospatial Go
Title of Series
Number of Parts
156
Author
License
CC Attribution 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
The programming language Go has established itself in various IT areas. This lightning talk offers a brief overview of Go with a focus on the existing ecosystem for processing geodata. Go is known for its speed and accessibility. Numerous geospatial projects like pg_featureserv, pg_tileserv, and tegola already make use of Go. This presentation showcases additional tools and libraries in this language.
Keywords
127
Least squaresFront and back endsInternetworkingPlanningProgramming languageContext awareness
Enterprise architectureService (economics)PlastikkarteComputing platformSoftware testingTransformation (genetics)Computer networkProgramming languageGoogolType theoryGeometryAlgorithmImplementationLibrary (computing)Coma BerenicesComputer-generated imageryOpen sourceCycle (graph theory)Keyboard shortcutLatent heatSoftware maintenanceGoodness of fitBitContext awarenessLink (knot theory)Electronic mailing listGeometryCASE <Informatik>Server (computing)Exterior algebraLogische ProgrammierspracheMultilaterationFile formatParameter (computer programming)Integrated development environmentComputer programmingMultiplicationJava appletSoftware developerCodeFront and back endsState observerWeb serviceProgramming languageLevel (video gaming)Point cloudWrapper (data mining)Open setBuildingProcess (computing)Reading (process)DatabaseLibrary (computing)Plug-in (computing)Projective planeOperating systemWeb 2.0Inclusion mapOpen sourceComputer animation
Special unitary groupComputer-assisted translationComputer animation
Transcript: English(auto-generated)
So, I will tell you about the Go programming language and how its support in the geospatial world is. So, I'm Jacob Mich. I work at the company CityCom. We do, among other things, broadband internet planning. And in this context, we developed our own spatial data infrastructure and we use Go as our backend.
Also, a lot for some business logic, but we also use it for requesting, for example, GeoServer. And in the context of this, I was investigating about Go, how it could fit into the geospatial world.
So, I made a list of which libraries exist and I will show you later. But first, a short introduction of what Go actually is. So, it's a programming language developed by Google in 2007. So, it's quite old already, but it got popular a bit later.
It has quite readable syntax, only a very few keywords. It's quite fast and versatile, but it feels like when you program it, it's a bit like Python, so it's very easy to read. And what I see, it's very often used either for web services, so you provide an API, or for command line tools.
You can use it for anything else as well, but this is the purpose which I've observed mostly. Also, the development experience is very nice, so your installation is quite smooth and it has batteries included. So, when you pretty much have only one command line tool, which does the formatting, you can run it, you can build it.
And when you build your program, you can run it on multiple operating systems without any dependencies. You can just give the binary to a person and they can directly run it and don't need to install any Java environment or something else.
It's just like it stands for itself. Also, there's a few things like the syntax, or like the formatting, it's directly defined in the language. So, if the program is not correctly formatted, it will not compile and there's only one way to format a Go. So, that's why there will be no arguments how you have to format your code, which is quite nice.
So, I compiled a list of geospatial libraries in the Go programming language. So, you can find it on GitHub. I have here libraries which are existing. So, for example, there's two wrappers for the Proj library for reprojection.
One for geos and also for cheetah should also be two somewhere. And then there are some command line tools. For example, Impossum is for importing OpenStreetMap data.
Cogger is for producing cloud optimized geotiff and Geoparky command line tool. Also, there are some servers. For example, PG feature serve. I introduced it yesterday a bit.
So, my observation is that it's mostly used as a kind of wrapper. So, for example, PG feature serve is reading data from a Postgres database and building a HTTP API on it. So, sometimes you can do some geospatial processing, but very often have the feeling it's very limited.
So, there's one project we developed. It's also in the context of geo, but we don't really use some geospatial processing. So, we use it for publishing QGIS plugins and we also open source that and you can use it.
And finally, what is suitable for GIS? So, first of all, it's accessible and fast. It's good for especially APIs and command line tools and easy for deployment.
But I have the feeling that GIS ecosystem is comparatively weak. So, you have libraries for specific things. But I have the feeling it's only one maintainer doing this and the update cycles are not so fast and there's no clear bindings to GDAL, Proj or geos. So, if I compare it to Rust, which is also a kind of newish language,
they all have much clearer bindings to like GDAL, Proj and geos. So, this could also be an alternative. But if you just want to create a nice API or a command line tool with a very specific use case, Go is definitely an interesting alternative. Alright, then here I have some links for you and then I'm thanking you for your attention.