From a3112efee0981268693be2c60968c82688dacf2f Mon Sep 17 00:00:00 2001 From: Jake Kasper Date: Fri, 5 Sep 2025 14:55:10 -0400 Subject: [PATCH] asdfasdf --- backend/src/routes/properties.js | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/backend/src/routes/properties.js b/backend/src/routes/properties.js index 09ec203..ee2188a 100644 --- a/backend/src/routes/properties.js +++ b/backend/src/routes/properties.js @@ -13,41 +13,24 @@ const calculatePolygonArea = (coordinates) => { console.log('Invalid coordinates for area calculation:', coordinates); return 0; } - console.log('Calculating area for coordinates:', coordinates); - - // Shoelace formula for polygon area - // Coordinates are in [latitude, longitude] format (not GeoJSON standard) let area = 0; const n = coordinates.length; - for (let i = 0; i < n; i++) { const j = (i + 1) % n; - // coordinates[i][0] = latitude, coordinates[i][1] = longitude - area += coordinates[i][1] * coordinates[j][0]; // lng * lat - area -= coordinates[j][1] * coordinates[i][0]; // lng * lat + area += coordinates[i][1] * coordinates[j][0]; + area -= coordinates[j][1] * coordinates[i][0]; } - area = Math.abs(area) / 2; console.log('Raw shoelace area (in deg²):', area); - - // Convert from decimal degrees to square feet - // coordinates are [latitude, longitude] format - const avgLat = coordinates.reduce((sum, coord) => sum + coord[0], 0) / n; // coord[0] is latitude + const avgLat = coordinates.reduce((sum, coord) => sum + coord[0], 0) / n; console.log('Average latitude:', avgLat); - - // More accurate conversion using Haversine-based approach - const latInRadians = avgLat * Math.PI / 180; - const metersPerDegreeLat = 111320; // meters per degree latitude (constant) - const metersPerDegreeLng = 111320 * Math.cos(latInRadians); // meters per degree longitude (varies with latitude) - - // Convert to square meters, then to square feet + const metersPerDegreeLat = 111320; + const metersPerDegreeLng = 111320 * Math.cos(avgLat * Math.PI / 180); const areaInSquareMeters = area * metersPerDegreeLat * metersPerDegreeLng; - const areaInSquareFeet = areaInSquareMeters * 10.7639; // 1 m² = 10.7639 ft² - + const areaInSquareFeet = areaInSquareMeters * 10.7639; console.log('Area in square meters:', areaInSquareMeters); console.log('Area in square feet:', areaInSquareFeet); - return areaInSquareFeet; };