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