Skip to content

Technology

On this page most top level technologies and frameworks and the reason behind using them is explained.

Backend

Python

For the programming language Python was chosen due to its large ecosystem regarding geodata processing, data science in general, as well as a quick development workflow.

Downsides are a suboptimal dependency management and no typing. Though type hints are used in the project

Pandas and GeoPandas

Rasterio

Processing of raster files (like GeoTiff).

Django

For the web facing parts the Django web framework is used. For the HTML templates the Django template language is used (default choice). The choice for Django was made due to its large community and continued development as well as the available documentation and structure which provides guidance as well for the core development as new users.

Taggit

Django app for tagging models.

PostGIS

The PostgreSQL based PostGIS database for spatial data provides easy handling of spatial data types as well as the benefits of a relational database.

Frontend

Bootstrap

For the styling of HTML/CSS the Bootstrap framework is used. It provides ready-to-use HTML components and a documentation, as well as grid system and general styling defaults/helpers. In contrast to other frontend frameworks, like Tailwind, the choice of Bootstrap was made to provide and use components directly without the need of running a frontend build process. This applies to the "core" development as well as the extensibility for the user in custom Data Hub instances with individual pages.

Octicons

Used for icons in the user interface.

DataTables (+ jQuery)

Interactive sorting and searching of client side tables.

Leaflet

Interactive maps with Data Hub specific data overlaid (Shapes, choropleth maps).

Plotly.js

Flexible charting library for visualizations of time series of the processed data.

D3.js

Highlight.js

Syntax highlighting for source code files shown in the frontend.

Svelte

Building of dynamic reusable components in the Data Hub frontend (like the chart component).

Infrastructure

Docker

Containers for distribution and deployment.

Licenses

The following table contains most first class dependencies of the Data Hub project. The Data Hub itself is licensed under the MIT license.

DependencyLicense
PythonPSF (BSD style)
PostGISGPL-2.0
GDALMIT
PROJMIT
Python packages:
PandasBSD-3-Clause
GeoPandasBSD-3-Clause
RasterioBSD-3-Clause
shapelyBSD-3-Clause
numpyBSD-3-Clause
geojsonBSD-3-Clause
osmnxMIT
DjangoBSD-3-Clause
Django Debug ToolbarBSD-3-Clause
Django TaggitBSD-3-Clause
django-environMIT
Web components:
BootstrapMIT
OcticonsMIT
LeafletBSD-2-Clause
Leaflet.loadingMIT
Leaflet.markerclusterMIT
DataTablesMIT
Plotly.jsMIT
Highlight.jsBSD-3-Clause
D3.jsISC
jQueryMIT
SvelteMIT