Geospatial Visualizer
3D models in real-world coordinates
2026 ยท Solo developer
A personal project to work with geospatial data. A browser viewer for 3D models stored in real-world UTM coordinates, using a floating origin so the geometry stays precise millions of metres from the origin.
Technologies: TypeScript, Three.js, Vite
Related expertise: Real-time 3D on the web

Overview
Geospatial Visualizer is a small browser tool for viewing 3D models placed in real-world coordinates. I built it as a personal project to work with geospatial data. It loads OBJ models whose vertices are stored in UTM, so every point is an easting, a northing and an altitude in metres.
You can load several models, show or hide each one, zoom to a single model or to all of them, switch to a top-down view, and drop markers at exact UTM coordinates.
The precision problem
UTM coordinates are large numbers: a northing can easily be around 4,000,000 metres. The GPU works with 32-bit floats, and at that size they can only tell apart positions about 25 cm from each other, so the geometry jitters and surfaces flicker as you move the camera.
The viewer uses a floating origin. Everything is drawn relative to a shared offset near the models, so the numbers that reach the GPU stay small and precise to the millimetre. The original UTM values are never modified, and converting between scene and UTM coordinates gives the same result in both directions, which is covered by unit tests.
Geospatial data usually uses Z for altitude, while Three.js uses Y as up, so the models are rotated once when they're drawn.
Stack
TypeScript and Three.js, built with Vite and tested with Vitest.
My involvement
- Designed and built the viewer, including the coordinate handling and its tests.