2.9 KiB
Raw Blame History

Polisplexity Digital Twin Viewer

This application is a Django-based 3D digital twin city renderer using A-Frame and real-world OpenStreetMap (OSM) data. It allows visualization of buildings, fiber paths, cell towers, and other urban infrastructure in a simulated, interactive WebVR environment.

Features

  • 🔲 Building extrusion from OSM: Downloads building footprints with geometry and height/levels metadata and extrudes them into 3D blocks.
  • 🛰️ Street network rendering: Downloads local driving network and represents it visually as 3D fiber links.
  • 🏙️ Recentered city layout: All elements are normalized to a (0,0) coordinate center and scaled down to allow a birds-eye view or giant-perspective simulation.
  • 📡 A-Frame-based environment: Uses aframe-environment-component for sky, lighting, ground, and interactions.
  • 🎯 Status gauges: Each building displays a status gauge with a rotating ring and transparent glass core, labeled with mock status data.
  • 🧠 Per-entity click interaction: Clicking on a gauge changes its color and toggles the status (mocked).
  • 🌐 Dynamic generation by coordinates: Any city view can be created dynamically via URL parameters like lat, long, and scale.

🏗️ Stack

Component Technology
Backend Django 5.x
Mapping API osmnx, shapely, geopandas
Frontend (3D) A-Frame 1.7.0
Visualization Libs aframe-environment-component
Deployment Ready? Yes, via Docker + Gunicorn

🔌 Example Usage

To load a city block from Centro Histórico, Mexico City:


[http://localhost:8001/city/digital/twin/osm\_city/?lat=19.391097\&long=-99.157815\&scale=0.1](http://localhost:8001/city/digital/twin/osm_city/?lat=19.391097&long=-99.157815&scale=0.1)

🧪 Directory Highlights

  • pxy_city_digital_twins/views.py: Request handler that decides which generator to use (osm_city, random_city, etc.)
  • services/osm_city.py: Main generator for real-world urban geometry based on lat/lon.
  • templates/pxy_city_digital_twins/city_digital_twin.html: A-Frame scene renderer.
  • templates/pxy_city_digital_twins/_status_gauge.html: UI fragment for interactive gauges on city elements.

📦 Dependencies

Add these to requirements.txt:

osmnx>=1.9.3
shapely
geopandas

Optional (for better performance in prod):

gunicorn
dj-database-url

🚧 To-Do

  • Load status from a real database or agent simulation
  • Add 3D models (e.g., trees, street furniture)
  • Support texture-mapped facades
  • Add time-based simulation / animation
  • Integrate sensor/IoT mock data stream

👀 Screenshot

Coming soon — consider generating A-Frame scene screenshots automatically using headless browser tools.


Maintained by Hadox Research Labs