Table of Content
A prototypical implementation of a Digital Twin for the city of Herne in Germany, focusing on the underground structural infrastructure. It was created in cooperation with the Bochum University of Applied Sciences and was initially based on a master's thesis. The project's goals are:
- Support the city of Herne on it's way to a Smart City.
- Provide an application, that can visualize heterogeneous data from different city departments in combination
- Visualize the city's (underground) sensor infrastructure.
- Gain practical experience in the field of digital twins.
The project is divided into multiple sub-repositories. This repository serves as an entry point.
-
Contains the Cesium web viewer.
-
Contains the Node.js backend server.
-
Doesn't contain the actual database. It serves as a place where users can temporarily store the data, that should be imported into the database during the build processs.
-
Contains Tools and scripts for data management, preparation and conversion.
The recommended way is to use Docker.
- Clone this repository to your local machine.
- Run the command
git submodule update --init
to download the submodules. - Navigate into the folders
DT-Herne-Frontend
,DT-Herne-Backend
andDT-Data-Management
and install the dependencies withnpm install
(ornpm ci
). - Run the command
npm run build
in the frontend submodule. This bundles the client into the directoryDT-Herne-Frontend/dist
. - Component-specific installtion instructions
- The frontend includes some of the standard Cesium ion maps and terrain. These are only accessible with an API-token. It can be generated for free with an Cesium ion account. Insert that token in the file
.env
in the submodule.
The .env file also contains the URL to the backend. By default it is set tohttp://localhost:8000/
. If the backend runs on a different server or port, this has to be adjusted accordingly.
- TODO Data locations
- The frontend includes some of the standard Cesium ion maps and terrain. These are only accessible with an API-token. It can be generated for free with an Cesium ion account. Insert that token in the file
- With all prparations done the last step is to run the commands
docker compose build
anddocker compose up -d
from the root directory.
There are two data locations. Depending on the API endpoint / data type, data is stored either in a mongodb instance or in a subdirectory on the backend server itself. While the database name is variable, the collection names are still hardcoded. The database used for development looks like this:
Since the mongodb runs in a docker container, data needs to be imported into the docker image. See the databse submodule for details. (TODO)
The Data Management sub-repository offers scripts and tools to create the shown collections. In most cases, these are tailored to the data provided by the city of Herne and might not work for your own data. But as long as the collections exist, the application will start.
For some endpoints, namely the pointcloud and the terrain tiles, data is stored in the subdirectory data
in the backend submodule (doesn't exist by default). There might be a way to store a folder-structure in mongodb, but for now the backend is partially used as a file-server. The pointcloud is expected to be in the subdirectory /data/metroPc
and the terrain tiles in the subdirectories data/terrain1
, data/terrain10
, data/terrain25
and data/terrain50
, where 1, 10, 25, and 50 stand for the resolution (which is an api query parameter). Again, refer to the Data Management sub-repository to see how these files are created.
Organization | Contact Person | Role | |
---|---|---|---|
City of Herne | Anja Sigesmund | Project Manager / Organizer | anja.sigesmund@herne.de |
Heinz Hasse | Project Manager / Organizer | heinz.hasse@herne.de | |
Bochum University of Applied Sciences | Benno Schmidt | Project Manager / Organizer | benno.schmidt@hs-bochum.de |
Tim Herker | Developer | tim.herker@stud.hs-bochum.de |
Released under the MIT License.