| <html> |
| <head> |
| <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" /> |
| <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script> |
| <script src="https://unpkg.com/@turf/turf@6.5.0/turf.min.js"></script> |
| <link rel="stylesheet" href="style.css"> |
| |
| </head> |
|
|
| <body> |
| <header>Interactive GeoJSON Map Viewer</header> |
|
|
| <div id="map"></div> |
|
|
| <div id="stats"> |
| <h3>GeoJSON Statistics</h3> |
| <div class="stat-item"> |
| <div class="stat-label"><i>π</i> Area (sq meters):</div> |
| <div id="area_sqm" class="value">Loading...</div> |
| </div> |
| <div class="stat-item"> |
| <div class="stat-label"><i>π</i> Area (hectares):</div> |
| <div id="area_hectares" class="value">Loading...</div> |
| </div> |
| <div class="stat-item"> |
| <div class="stat-label"><i>π</i> Centroid:</div> |
| <div id="centroid" class="value">Loading...</div> |
| </div> |
| <div class="stat-item"> |
| <span class="stat-label"><i>Summary:</i></span> |
| <div class="value" id="summary">Loading...</div> |
| </div> |
| </div> |
|
|
| <footer>© 2024 GeoJSON Map Viewer by Sustainability Lab IIT Gandhinagar</footer> |
| <script src="geostats.js"></script> |
|
|
| <script type="text/javascript"> |
| |
| const map = L.map('map').setView([58.4, 43.0], 11); |
| |
| |
| new L.TileLayer('http://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z}').addTo(map); |
| |
| |
| function loadGeoJSON(url) { |
| fetch(url) |
| .then(response => response.json()) |
| .then(data => { |
| const geoJsonLayer = L.geoJSON(data); |
| geoJsonLayer.addTo(map); |
| |
| |
| map.fitBounds(geoJsonLayer.getBounds()); |
| |
| |
| const areaStats = calculateTotalArea(data); |
| const centroid = calculateCentroid(data); |
| const geometryCounts = countGeometryTypes(data); |
| const featureNames = getFeatureNames(data); |
| |
| |
| document.getElementById('area_sqm').textContent = areaStats.areaSqMeters.toFixed(2); |
| document.getElementById('area_hectares').textContent = areaStats.areaHectares.toFixed(2); |
| document.getElementById('centroid').textContent = |
| `Lat: ${centroid.geometry.coordinates[1].toFixed(5)}, |
| Lng: ${centroid.geometry.coordinates[0].toFixed(5)}`; |
| document.getElementById('summary').innerHTML = ` |
| <strong>Polygons:</strong> ${geometryCounts.Polygon} <br> |
| <strong>Points:</strong> ${geometryCounts.Point} <br> |
| <strong>LineStrings:</strong> ${geometryCounts.LineString} <br> |
| <strong>MultiPolygons:</strong> ${geometryCounts.MultiPolygon} <br> |
| <strong>Feature Names:</strong> ${featureNames.length > 0 ? featureNames.join(', ') : 'N/A'} |
| `; |
| }) |
| .catch(error => { |
| console.error('Error loading GeoJSON:', error); |
| alert('Failed to load GeoJSON file. Please check the URL.'); |
| }); |
| } |
| |
| |
| const urlParams = new URLSearchParams(window.location.search); |
| const geojsonUrl = urlParams.get('geojson_url'); |
| |
| |
| if (geojsonUrl) { |
| loadGeoJSON(geojsonUrl); |
| } else { |
| alert('Please provide a valid GeoJSON URL in the "geojson_url" query parameter.'); |
| } |
| </script> |
| </body> |
| </html> |
|
|