aboutsummaryrefslogtreecommitdiffstats
path: root/download.js
diff options
context:
space:
mode:
Diffstat (limited to 'download.js')
-rw-r--r--download.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/download.js b/download.js
new file mode 100644
index 0000000..d5c4f62
--- /dev/null
+++ b/download.js
@@ -0,0 +1,57 @@
+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();