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.
Dependency | License |
---|---|
Python | PSF (BSD style) |
PostGIS | GPL-2.0 |
GDAL | MIT |
PROJ | MIT |
Python packages: | |
Pandas | BSD-3-Clause |
GeoPandas | BSD-3-Clause |
Rasterio | BSD-3-Clause |
shapely | BSD-3-Clause |
numpy | BSD-3-Clause |
geojson | BSD-3-Clause |
osmnx | MIT |
Django | BSD-3-Clause |
Django Debug Toolbar | BSD-3-Clause |
Django Taggit | BSD-3-Clause |
django-environ | MIT |
Web components: | |
Bootstrap | MIT |
Octicons | MIT |
Leaflet | BSD-2-Clause |
Leaflet.loading | MIT |
Leaflet.markercluster | MIT |
DataTables | MIT |
Plotly.js | MIT |
Highlight.js | BSD-3-Clause |
D3.js | ISC |
jQuery | MIT |
Svelte | MIT |