Public
Edited
Mar 30, 2023
Paused
1 fork
Importers
3 stars
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
geojson_nuts3 = {
const fc = topojson.feature(nuts3_topo, nuts3_topo.objects.NUTS250_N3);
fc.features.forEach((region, i) => {
// Gemeinden für NUTS 3 Region abrufen
const gemeinden = nuts3_gemeinden.get(region.properties.NUTS_CODE);
// Potentiale aggregieren
const gemeinde_daten = gemeinden.flatMap((g) =>
ausbaupotential_gemeinden.filter((r) => Number(r.AGS) == g.AGS)
);
fc.features[i].properties["Installierbare Leistung (MWp)"] = d3.sum(
gemeinde_daten.map((r) => r["Installierbare Leistung (MWp)"])
);
fc.features[i].properties["Stromerzeugungspotenzial (MWh)"] = d3.sum(
gemeinde_daten.map((r) => r["Stromerzeugungspotenzial (MWh)"])
);
fc.features[i].properties["Geeignete Flächen (ha)"] = d3.sum(
gemeinde_daten.map((r) => r["Geeignete Flächen (ha)"])
);
});
return fc;
}
Insert cell
total_TWh = _.round(energy_sums.totalEnergieMWh / (1000 * 1000), 2) //
Insert cell
perc_energie_verbrauch_d = _.round((total_TWh / 588.8) * 100, 2) // Gesamtproduktion Deutschland https://www.bmwk.de/Redaktion/DE/Dossier/strommarkt-der-zukunft.html#:~:text=In%20Deutschland%20wurden%20im%20Jahr,das%20sind%20588%20Milliarden%20kWh%20.
Insert cell
Insert cell
flaeche_autobahn_ha = Math.round(3997965635 / 10000)
Insert cell
flaeche_schienen_ha = Math.round(6613393610 / 10000)
Insert cell
Insert cell
Insert cell
Insert cell
natura2000_area = total_area - total_area_no_natura2000
Insert cell
Insert cell
Insert cell
naturschutz_pattern = render(
textures.lines().size(4).strokeWidth(1).stroke("white").background("#7DBB39")
)
Insert cell
naturschutz_pattern_png = rasterize(naturschutz_pattern)
Insert cell
Insert cell
Insert cell
Insert cell
energy_sums = lf_200_db.queryRow(
`SELECT
ROUND(SUM(MWp)) totalInstallierbarMWp,
ROUND(SUM(MWh)) totalEnergieMWh,
ROUND(AVG(PVOUT_centroid)) avgPVOUT
FROM
db_extended
`
)
Insert cell
mean_area = lf_200_db.queryRow(
`SELECT
AVG(streifen_flaeche_ha) mean_area,
MEDIAN(streifen_flaeche_ha) median_area
FROM
db_extended
`
)
Insert cell
total_area_filtered = (
await lf_200_db.queryRow(
'SELECT ROUND(SUM(streifen_flaeche_ha)) "sum" FROM db_extended'
)
).sum
Insert cell
anzahl_flaechen_gesamt = (
await lf_200_db.queryRow(`SELECT count()::INT as count
FROM lf_200`)
).count
Insert cell
anzahl_flaechen_filtered = (
await lf_200_db.queryRow(`SELECT count()::INT as count
FROM db_extended`)
).count
Insert cell
total_area = (
await lf_200_db.queryRow(
'SELECT ROUND(SUM(streifen_flaeche_ha)) "sum" FROM lf_200'
)
).sum
Insert cell
total_area_no_natura2000 = (
await lf_200_db.queryRow(
'SELECT ROUND(SUM(streifen_flaeche_ha)) "sum" FROM lf_200 WHERE LENGTH(natura2000) == 0'
)
).sum
Insert cell
areas_per_land_use = ({
Dauergrünland: (
await lf_200_db.queryRow(
`SELECT
ROUND(SUM(streifen_flaeche_ha)) pg
FROM lf_200
WHERE crop_type='Permanent grassland'`
)
).pg,
Andere: (
await lf_200_db.queryRow(
`SELECT
ROUND(SUM(streifen_flaeche_ha)) andere
FROM lf_200
WHERE ${otherCrops.map((crop) => `crop_type='${crop}'`).join(" OR ")}`
)
).andere,
Ackerland: (
await lf_200_db.queryRow(
`SELECT
ROUND(SUM(streifen_flaeche_ha)) al
FROM lf_200
WHERE crop_type!='Permanent grassland' AND ${otherCrops
.map((crop) => `crop_type!='${crop}'`)
.join(" AND ")}`
)
).al
})
Insert cell
lf_200_db = (db_extended, db_initial)
Insert cell
db_extended = db_initial.query(
`CREATE OR REPLACE VIEW db_extended AS
SELECT
(streifen_flaeche_ha / ${fia_simple}) AS "MWp",
((streifen_flaeche_ha / ${fia_simple}) * PVOUT_centroid) AS "MWh",
*
FROM lf_200
WHERE
streifen_flaeche_ha >= ${min_size}
AND LENGTH(natura2000) ${nat_ausschliessen.length ? "== 0" : ">= 0"}
`
)
Insert cell
db_initial = DuckDBClient.of({
lf_200: await FileAttachment(
"lf_an_autobahnen_bahnstrecken_inkl_daten@1.parquet"
)
})
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more