GeoWind3D is a web application for constructing high-fidelity CFD-ready 3D city models from 3D image data and OpenStreetMap (OSM) data. Users can define an area of interest and generate integrated models of buildings, terrain and elevated walkways, together with an OpenFOAM case for wind simulation.
app/: React and Vite frontendserver/: Node.js and Express backendgeometry/: Python geometry servicedatabase/: PostgreSQL/PostGIS schema and OSM source data
- Node.js and npm (Node.js 20 or later recommended)
- Python 3.10 or later and uv
- PostgreSQL with PostGIS
- A Mapbox access token
- The 3D image data distributed through Figshare
The downloadable case data cover the Central District of Hong Kong and are available on
Figshare. Download central.zip from the item and extract it. The extracted central directory must contain tileset.json and its associated tile files.
Create an empty PostgreSQL database and import the supplied SQL file:
createdb -U postgres citywind
psql -U postgres -d citywind -f database/citywind.sqlThe SQL file enables PostGIS and creates the osm_building and osm_elevated_walkway tables with the data required by the system.
Copy the example environment files:
cp server/.env.example server/.env
cp app/.env.example app/.envOn Windows PowerShell, use:
Copy-Item server/.env.example server/.env
Copy-Item app/.env.example app/.envEdit server/.env and set:
TILE_DATA_DIRto the absolute path of the extractedcentraldirectoryTEMP_DIRto an existing writable directory for generated files- the PostgreSQL connection values for the imported database
GEOMETRY_SERVICE_URLif the Python service is not running athttp://localhost:8000
Edit app/.env and provide a valid VITE_MAPBOX_TOKEN. Change VITE_BACKEND_URL if the Node.js server is not running at http://localhost:5000.
Install the frontend dependencies:
cd app
npm ciInstall the backend dependencies:
cd server
npm ciInstall the Python dependencies:
cd geometry
uv syncStart the Python geometry service:
cd geometry
uv run main.pyStart the Node.js backend in a second terminal:
cd server
npm run devStart the frontend in a third terminal:
cd app
npm run devOpen http://localhost:5173 in a web browser.
This project is licensed under the MIT License.