fix sq ft again

This commit is contained in:
Jake Kasper
2025-08-22 14:43:09 -04:00
parent c3a8b5dcd8
commit 9c891c6156

View File

@@ -16,21 +16,23 @@ const calculatePolygonArea = (coordinates) => {
console.log('Calculating area for coordinates:', coordinates); console.log('Calculating area for coordinates:', coordinates);
// Shoelace formula for polygon area // Shoelace formula for polygon area
// Coordinates are in [latitude, longitude] format (not GeoJSON standard)
let area = 0; let area = 0;
const n = coordinates.length; const n = coordinates.length;
for (let i = 0; i < n; i++) { for (let i = 0; i < n; i++) {
const j = (i + 1) % n; const j = (i + 1) % n;
area += coordinates[i][0] * coordinates[j][1]; // coordinates[i][0] = latitude, coordinates[i][1] = longitude
area -= coordinates[j][0] * coordinates[i][1]; area += coordinates[i][1] * coordinates[j][0]; // lng * lat
area -= coordinates[j][1] * coordinates[i][0]; // lng * lat
} }
area = Math.abs(area) / 2; area = Math.abs(area) / 2;
console.log('Raw shoelace area (in deg²):', area); console.log('Raw shoelace area (in deg²):', area);
// Convert from decimal degrees to square feet // Convert from decimal degrees to square feet
// Assuming coordinates are [longitude, latitude] (GeoJSON standard) // coordinates are [latitude, longitude] format
const avgLat = coordinates.reduce((sum, coord) => sum + coord[1], 0) / n; const avgLat = coordinates.reduce((sum, coord) => sum + coord[0], 0) / n; // coord[0] is latitude
console.log('Average latitude:', avgLat); console.log('Average latitude:', avgLat);
// More accurate conversion using Haversine-based approach // More accurate conversion using Haversine-based approach