Spaces:
Running
Running
| export const calculateBounds = (centerLat, centerLng, radiusKm) => { | |
| const R = 6378137; | |
| const scaleFactor = 1.0 / Math.cos(centerLat * Math.PI / 180); | |
| const mercatorExtent = (radiusKm * 1000) * scaleFactor; | |
| const x = centerLng * (Math.PI / 180) * R; | |
| const latRad = centerLat * (Math.PI / 180); | |
| const y = Math.log(Math.tan((Math.PI / 4) + (latRad / 2))) * R; | |
| const minX = x - mercatorExtent; | |
| const maxX = x + mercatorExtent; | |
| const minY = y - mercatorExtent; | |
| const maxY = y + mercatorExtent; | |
| const toLng = (mercX) => (mercX / R) * (180 / Math.PI); | |
| const toLat = (mercY) => (2 * Math.atan(Math.exp(mercY / R)) - Math.PI / 2) * (180 / Math.PI); | |
| return [ | |
| [toLng(minX), toLat(maxY)], [toLng(maxX), toLat(maxY)], | |
| [toLng(maxX), toLat(minY)], [toLng(minX), toLat(minY)] | |
| ]; | |
| }; | |
| export const getImageByPath = (result, path) => { | |
| if (!result || !path) return null; | |
| if (path.startsWith('masks.')) { | |
| const maskKey = path.split('.')[1]; | |
| return result.masks ? result.masks[maskKey] : null; | |
| } | |
| return result[path]; | |
| }; | |
| export const CLASS_METADATA = { | |
| 'Drzewa / Las': { label: 'Trees / Forest', color: 'rgb(0, 100, 0)' }, | |
| 'Zarośla': { label: 'Shrubland', color: 'rgb(255, 187, 34)' }, | |
| 'Trawa / Łąki': { label: 'Grassland', color: 'rgb(255, 255, 76)' }, | |
| 'Uprawy rolne': { label: 'Crops', color: 'rgb(240, 150, 255)' }, | |
| 'Zabudowa': { label: 'Built area', color: 'rgb(250, 0, 0)' }, | |
| 'Goły grunt': { label: 'Bare Ground', color: 'rgb(180, 180, 180)' }, | |
| 'Śnieg i lód': { label: 'Snow & Ice', color: 'rgb(240, 240, 240)' }, | |
| 'Woda': { label: 'Water', color: 'rgb(0, 100, 200)' }, | |
| 'Tereny podmokłe': { label: 'Flooded vegetation', color: 'rgb(0, 150, 160)' }, | |
| 'Namorzyny': { label: 'Mangroves', color: 'rgb(0, 207, 117)' }, | |
| 'Mchy i porosty': { label: 'Moss & Lichen', color: 'rgb(250, 230, 160)' }, | |
| 'Brak danych': { label: 'No Data', color: 'rgb(100, 100, 100)' }, | |
| // English labels returned by backend | |
| 'No data': { label: 'No data', color: 'rgb(100, 100, 100)' }, | |
| 'Trees / Forest': { label: 'Trees / Forest', color: 'rgb(0, 100, 0)' }, | |
| 'Shrubs': { label: 'Shrubs', color: 'rgb(255, 187, 34)' }, | |
| 'Grass / Meadows': { label: 'Grass / Meadows', color: 'rgb(255, 255, 76)' }, | |
| 'Cultivated crops': { label: 'Cultivated crops', color: 'rgb(240, 150, 255)' }, | |
| 'Buildings': { label: 'Buildings', color: 'rgb(250, 0, 0)' }, | |
| 'Bare ground': { label: 'Bare ground', color: 'rgb(180, 180, 180)' }, | |
| 'Snow and ice': { label: 'Snow and ice', color: 'rgb(240, 240, 240)' }, | |
| 'Water': { label: 'Water', color: 'rgb(0, 100, 200)' }, | |
| 'Wetlands': { label: 'Wetlands', color: 'rgb(0, 150, 160)' }, | |
| 'Mangroves': { label: 'Mangroves', color: 'rgb(0, 207, 117)' }, | |
| 'Lichens and moss': { label: 'Lichens and moss', color: 'rgb(250, 230, 160)' } | |
| }; | |
| export const getMetadata = (className) => { | |
| return CLASS_METADATA[className] || { label: className, color: '#666' }; | |
| }; | |