const missing = [ { id: 'lautzenhausen-55483', name: 'PV-Anlage, 55483 Lautzenhausen', desc: 'pv', zip: '55483' }, { id: 'schleiz-07907', name: 'Breitbandausbau, 07907 Schleiz', desc: 'fiber', zip: '07907' }, { id: 'grosshartau-01909', name: 'PV-Anlage, 01909 Großhartau', desc: 'pv', zip: '01909' }, { id: 'halsbrücke-09600', name: 'Breitbandausbau, 09600 Halsbrücke', desc: 'fiber', zip: '09600' }, { id: 'seinsheim-97342', name: 'PV-Anlage, 97342 Seinsheim', desc: 'pv', zip: '97342' }, { id: 'schenkenberg-17291', name: 'Kabelschutzrohrtrasse, 17291 Schenkenberg-Polen', desc: 'power', zip: '17291' }, { id: 'thundorf-97711', name: 'PV-Anlage, 97711 Thundorf OT Theinfeld', desc: 'pv', zip: '97711' }, { id: 'tarnow-18249', name: 'Windpark, 18249 Tarnow-Prüzen', desc: 'wind', zip: '18249' }, { id: 'ennigerloh-59320', name: 'PV-Anlage, 59320 Ennigerloh-Oelde', desc: 'pv', zip: '59320' } ]; async function geocode() { for (const item of missing) { try { const res = await fetch(`https://nominatim.openstreetmap.org/search?postalcode=${item.zip}&country=Germany&format=json`); const data = await res.json(); if (data && data.length > 0) { const lat = parseFloat(data[0].lat); const lon = parseFloat(data[0].lon); const x = (lon - 4.64) * 8.395; const y = (55.215 - lat) * 12.589; console.log(` {`); console.log(` id: '${item.id}',`); console.log(` name: '${item.name}',`); console.log(` type: 'minor_node',`); console.log(` x: ${x.toFixed(2)},`); console.log(` y: ${y.toFixed(2)},`); console.log(` description: '${item.desc}',`); console.log(` },`); } else { console.log(`// Could not geocode ${item.zip}`); } } catch(e) { console.log(`// Error geocoding ${item.zip}`); } } } geocode();