Geo Data Processing Tool is a full-stack application that ingests CSV geospatial data, clusters nearby points, and visualizes the results on an interactive map with analytics.
- Upload CSV files (
latitude/longitudeandvalueorprice) - Case-insensitive CSV header handling
- Price normalization (supports symbols like
$,€, commas) - In-memory geospatial clustering on the backend
- Interactive cluster visualization on the map
- Analytics panel (total points, clusters, outlier detection)
- Light / Dark mode toggle
- Backend: .NET 8 Web API
- Geospatial Processing: NetTopologySuite
- CSV Parsing: CsvHelper
- Frontend: React (Vite) + Tailwind CSS
- Map Visualization: Deck.gl + react-map-gl + MapLibre
- .NET 8 Web API gives strong performance, clean API development, and long-term maintainability.
- NetTopologySuite is a robust and proven geospatial library for distance calculations, centroids, and spatial operations.
- React + Vite provides fast development iteration and a clean component-based UI architecture.
- Deck.gl is ideal for rendering map data layers efficiently and supports rich interactivity for geospatial analytics.
- This combination keeps parsing and clustering reliable on the server, while delivering responsive visualization and UX on the client.
GeoDataProcessingTool/-> Backend (.NET 8 API)frontend/-> Frontend (React + Vite)
- .NET SDK 8.x
- Node.js 20+ (or newer) and npm
cd "GeoDataProcessingTool"
dotnet run --urls http://localhost:5000cd "frontend"
copy .env.example .env
npm install
npm run devThe frontend runs on http://localhost:5173 (default Vite port).
Accepted columns (case-insensitive):
latitudelongitudevalue(preferred) orprice(fallback)
Example:
latitude,longitude,price
40.6401,22.9444,"$1,234.50"
40.6405,22.9448,"€980"POST /api/geo/upload- Content type:
multipart/form-data - Form field:
file
Response: JSON list of clusters with centroid, point count, and average value.