// Map layer configurations import { generateLayerConfig } from './wmtsCapabilities'; // Generate layer configurations from WMTS capabilities const polishOrthophoto = generateLayerConfig('orthophoto'); export const mapLayers = { base: [ { name: "OpenStreetMap", checked: true, attribution: '© OpenStreetMap contributors', url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", maxZoom: 20 }, { name: "🇵🇱 Polish Orthophoto (Standard)", attribution: '© Geoportal', url: "https://mapy.geoportal.gov.pl/wss/service/PZGIK/ORTO/WMTS/StandardResolution?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ORTO&STYLE=default&TILEMATRIXSET=EPSG:3857&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&FORMAT=image/jpeg", maxZoom: 20, checked: false }, { name: "🇵🇱 Polish Orthophoto (High Resolution)", attribution: '© Geoportal', url: "https://mapy.geoportal.gov.pl/wss/service/PZGIK/ORTO/WMTS/HighResolution?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ORTO&STYLE=default&TILEMATRIXSET=EPSG:3857&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&FORMAT=image/jpeg", maxZoom: 20, checked: false }, { name: "🌍 Google Satellite", attribution: '© Google', url: "http://mt1.google.com/vt/lyrs=s&hl=pl&x={x}&y={y}&z={z}", maxZoom: 20, checked: false }, { name: "🌍 Google Hybrid", attribution: '© Google', url: "http://mt1.google.com/vt/lyrs=y&hl=pl&x={x}&y={y}&z={z}", maxZoom: 20, checked: false }, { name: "Satellite (Esri)", attribution: '© Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community', url: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}", maxZoom: 20 }, { name: "Topographic", attribution: '© OpenStreetMap contributors, © CARTO', url: "https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}{r}.png", maxZoom: 20 } ].filter(Boolean), // Remove any null entries overlays: [ { name: "🌍 Google Roads", type: "tile", attribution: '© Google', url: "http://mt1.google.com/vt/lyrs=h&hl=pl&x={x}&y={y}&z={z}", maxZoom: 20, opacity: 1.0, checked: false }, { name: "📋 Polish Cadastral Data (Działki) - Server 1", type: "wms", attribution: '© GUGiK - Krajowa Integracja Ewidencji Gruntów', url: "https://integracja01.gugik.gov.pl/cgi-bin/KrajowaIntegracjaEwidencjiGruntow", params: { service: 'WMS', request: 'GetMap', layers: 'powiaty,powiaty_obreby,zsin,obreby,dzialki,geoportal,numery_dzialek,budynki', styles: ',,,,,,,', format: 'image/png', transparent: true, version: '1.3.0', srs: 'EPSG:3857', exceptions: 'xml', tiled: true }, opacity: 0.8, checked: false }, { name: "📋 Polish Cadastral Data (Działki) - Server 2", type: "wms", attribution: '© GUGiK - Krajowa Integracja Ewidencji Gruntów', url: "https://integracja.gugik.gov.pl/cgi-bin/KrajowaIntegracjaEwidencjiGruntow", params: { service: 'WMS', request: 'GetMap', layers: 'dzialki,obreby,numery_dzialek,budynki,kontury,uzytki', styles: ',,,,,,', format: 'image/png', transparent: true, version: '1.3.0', srs: 'EPSG:3857', tiled: true }, opacity: 0.8, checked: false }, { name: "🏗️ Polish Spatial Planning", type: "wms", attribution: '© Geoportal', url: "https://mapy.geoportal.gov.pl/wss/ext/KrajowaIntegracjaMiejscowychPlanowZagospodarowaniaPrzestrzennego", params: { service: 'WMS', request: 'GetMap', layers: 'raster,wektor-str,wektor-lzb,wektor-pow,wektor-lin,wektor-pkt,granice', styles: ',,,,,,', format: 'image/png', transparent: true, version: '1.3.0', srs: 'EPSG:3857', tiled: true }, opacity: 0.7, checked: false }, { name: "🛣️ LP-Portal Roads", type: "wms", attribution: '© LP-Portal', url: "https://geoserver.lp-portal.pl/geoserver/pzdnowysacz/wms", params: { service: 'WMS', request: 'GetMap', layers: '00_6_mapainteraktywna_drogi', styles: '', format: 'image/png8', transparent: true, version: '1.3.0', srs: 'EPSG:3857', tiled: true }, opacity: 0.9, checked: false }, { name: "🏷️ LP-Portal Street Names", type: "wms", attribution: '© LP-Portal', url: "https://geoserver.lp-portal.pl/geoserver/pzdnowysacz/wms", params: { service: 'WMS', request: 'GetMap', layers: '00_5_mapainteraktywna_opisy_drog,00_3_mapainteraktywna_nazwy_ulic', styles: '', format: 'image/png8', transparent: true, version: '1.1.1', srs: 'EPSG:3857', tiled: true }, opacity: 1.0, checked: false }, { name: "📐 LP-Portal Parcels", type: "wms", attribution: '© LP-Portal', url: "https://geoserver.lp-portal.pl/geoserver/pzdnowysacz/wms", params: { service: 'WMS', request: 'GetMap', layers: 'dzialki', styles: '', format: 'image/png', transparent: true, version: '1.1.1', srs: 'EPSG:3857', tiled: true }, opacity: 0.6, checked: false }, { name: "📍 LP-Portal Survey Markers", type: "wms", attribution: '© LP-Portal', url: "https://geoserver.lp-portal.pl/geoserver/pzdnowysacz/wms", params: { service: 'WMS', request: 'GetMap', layers: '00_2_view_geop_odcinek_pikietaz_glob_multi', styles: '', format: 'image/png8', transparent: true, version: '1.1.1', crs: 'EPSG:3857', tiled: true }, opacity: 0.8, checked: false } ] }; // WMTS services configuration with GetCapabilities URLs export const wmtsServices = { polishOrthophoto: { capabilitiesUrl: "https://mapy.geoportal.gov.pl/wss/service/PZGIK/ORTO/WMTS/StandardResolution?Service=WMTS&Request=GetCapabilities", layer: "ORTO", style: "default", tilematrixSet: "EPSG:2180", format: "image/jpeg" } }; // Helper function to check WMTS capabilities export async function checkWMTSCapabilities(serviceKey) { const service = wmtsServices[serviceKey]; if (!service) return null; try { const response = await fetch(service.capabilitiesUrl); const xml = await response.text(); console.log(`WMTS Capabilities for ${serviceKey}:`, xml); return xml; } catch (error) { console.error(`Failed to fetch WMTS capabilities for ${serviceKey}:`, error); return null; } }