const fs = require('fs'); const path = require('path'); // Base URL for the WFS service const baseUrl = 'https://kartta.hel.fi/ws/geoserver/avoindata/wfs'; // List of layers to download (extendable by adding more items to this array) const layers = [ 'Aluesarjat_avainluvut_2024', 'Seutukartta_liikenne_paatiet', 'Seutukartta_liikenne_metroasemat', 'Seutukartta_liikenne_metro_rata', 'Seutukartta_liikenne_juna_rata', 'Seutukartta_liikenne_juna_asema', 'Seutukartta_aluejako_pienalue', 'Seutukartta_aluejako_kuntarajat', 'Seutukartta_maankaytto_jarvet', 'Seutukartta_maankaytto_joet', 'Seutukartta_meren_rantaviiva', 'Toimipisterekisteri_palvelut' ]; // Output directory const outputDir = path.join(__dirname, 'app', 'data'); // Create output directory if it doesn't exist if (!fs.existsSync(outputDir)) { fs.mkdirSync(outputDir, { recursive: true }); } // Function to download and save layer data async function downloadLayer(layer) { const url = `${baseUrl}?service=WFS&version=2.0.0&request=GetFeature&typeName=avoindata:${layer}&outputFormat=application/json&srsname=EPSG:4326`; try { const response = await fetch(url); if (!response.ok) { throw new Error(`Failed to fetch ${layer}: ${response.statusText}`); } const data = await response.json(); const filePath = path.join(outputDir, `${layer}.json`); fs.writeFileSync(filePath, JSON.stringify(data, null, '\t')); console.log(`Downloaded and saved: ${layer}.json`); } catch (error) { console.error(`Error downloading ${layer}: ${error.message}`); } } // Download all layers sequentially async function main() { for (const layer of layers) { await downloadLayer(layer); } } main();