JuliaCon 2020 (times are in UTC)

GeoInterface: bringing geospatial packages together
07-30, 12:40–12:50 (UTC), Red Track

The GeoInterface, a package for interoperability of geospatial geometries, has been completely redesigned. Formerly it forced geometries to subtype abstract interface types. Now it is much more flexible, allowing packages to hook in using traits, and support methods based on the Simple Features standard. This talk will show why this is important for the JuliaGeo ecosystem, and what it enables you to do.


In the Julia documentation, the example of Point{T} is used to introduce parametric types. It is easy to implement your own point type, and many packages have done so. For users, having to convert their points from package A to package B can be bothersome. Besides points, the same applies to other geometries such as lines and polygons, which are commonly used in geospatial workflows. Just agreeing on a single set of types for all uses is unlikely, since the diversity stems from different needs. Some may want to match a particular file format, or wrap pointers through a C API, such as GDAL.

Hence, to embrace the diversity and allow smooth workflows involving different geometry representations, we redesigned GeoInterface.jl. It allows you to efficiently convert between any sets of types that implement the interface, without having to know about or depend on the other package. The redesign incorporates many ideas from the Simple Features standard, and was inspired by the success of the Tables.jl interface. Interestingly, we can show examples how these two interfaces can complement each other for tabular data with geometry columns, as seen in Shapefile.jl and GeoJSONTables.jl.

Martijn Visser is a hydrologist working at the Deltares applied research institute in the Netherlands. He has been an active developer of the JuliaGeo community effort since the beginning, and wants to make Julia a great choice for geospatial workflows.