Carto alt: Datasets Update Anleitung - MunichWays/Carto GitHub Wiki

Carto alt: jeden 1. Sonntag im Monat

Carto neu jeden Sonntag, siehe https://github.com/MunichWays/Carto/wiki/Datasets-Update-Anleitung

0. Datasets synchronisieren

Mehrere Datasets wie "radlvorrangnetz_masterliste_1" oder "ist_radlvorrangnetz_munichways_v20" werden automatisch alle 24 Stunden vom Google Drive synchronisiert.

  • manuell aktualisieren/syncronisieren: In Carto anmelden
  • im Reiter oben "Data" ist_radlvorrangnetz_munichways_v20 öffnen
  • synchronisieren klicken: unscheinbarer Link oben über den Spaltennamen in blau "sync now" (kann zwischen wenigen Sekunden und einigen Minuten dauern)
  • danach ist der synchronisieren Link für 15 Minuten deaktivert. Falls Wiederholung nötig, Karte schließen und nach 15 Minuten wieder öffnen.

Alte radlvorrangnetz_masterliste updaten

Am 09.12.2024 war der automtische Sync der Tabelle radlvorrangnetz_masterliste kaputt. Seitdem gibt es radlvorrangnetz_masterliste_1.

truncate radlvorrangnetz_masterliste;
insert into radlvorrangnetz_masterliste
select * FROM radlvorrangnetz_masterliste_1
;

1. Optionale Checks (nicht mehr nötig)

Da wir keine Carto Linien mehr ändern, sollten diese Checks überflüssig sein. Grobe Fehler in der Masterliste könnten nach wie vor eine Fehlerquelle sein.

  • Im Dataset radlvorrangnetz_masterliste_1 unten mit dem Schalter von “METADATA” auf “SQL” wechseln.

1.1 Linie (the_geom) in Carto rv, aber nicht in Masterliste (rvm)

oder andersherum (z.B. Zeile wurde in Masterliste versehentlich gelöscht oder überschrieben)

SQL-Anweisung:

select rv.cartodb_id, rv.name, rv.farbe from radlvorrangnetz rv 
where rv.cartodb_id not in (select cartodbid_in_liste  from radlvorrangnetz_masterliste_1 where cartodbid_in_liste >0)
order by rv.cartodb_id
  • Die SQL-Anweisung kopieren und einfügen. Dann auf "APPLY" unten rechts klicken. Es erscheint keine positiv Bestätigung. Wenn unten links kein Fehler angezeigt wird, wurde der SQl-Befehl ausgeführt.

--> erwartet: keine Datensätze gefunden

1.2 Doppelte cartodbid_in_liste

SELECT cartodbid_in_liste, COUNT(*)
FROM radlvorrangnetz_masterliste_1 rvm
GROUP BY cartodbid_in_liste
HAVING COUNT(*) > 1
ORDER BY COUNT(*)

--> erwartet: nur x Fälle mit null (06.2024 47 Fälle) aber keine cartodbid_in_liste als Ergebnis --> falls doch Behebung: mehrfache cartodbid_in_liste in der Masterliste löschen

1.4 Nach evtl. Korrekturen erneut synchronisieren

Falls Wiederholung nötig, Karte schließen und nach 15 Minuten wieder öffnen. Der Link "sync now" kann nur alle 15 Minuten durchgeführt werden. Masterliste synchronisieren (unscheinbarer Link in blau "sync now")

2. Update datasets

2a Update dataset radlvorrangnetz_visualisieren

Für einfachere Visualisierungen in Carto wird dieser Layer in vielen Karten verwendet. Er enthält genau die Felder, die für die Layer und deren Pop-Ups in dieser Reihenfolge benötigt werden.

  • Dataset radlvorrangnetz_visualisieren öffnen und unten mit dem Schalter von “METADATA” auf “SQL” wechseln.

  • Alle Datensätze in radlvorrangnetz_visualisieren löschen!

truncate radlvorrangnetz_visualisieren;
  • Alle Datensätze in radlvorrangnetz_visualisieren einfügen
insert into radlvorrangnetz_visualisieren ( 
  cartodb_id, the_geom, strassenansicht_klick_mich, name, strecke, ist_situation, happy_bike_level, soll_massnahmen, massnahmen_kategorie_link, massnahmen_kategorie, kategorie_id
  , beschreibung, munichways_id, status_umsetzung, bezirk_link, neuralgischer_punkt, links
  , netztyp, plan_netztyp_id, mw_rv_strecke, rsv_strecke, viel_kfz, netztyp_id, status_id
  , Status_2019, Status_2020, Status_2021, Status_2022, Status_2023, Status_2024, Status_2025
  , restriktionen, restriktionen_bike_level, realisierung
  , Massnahmen_Blatt, Massnahmen_Index, prio_gesamt, status_netzplanung, MW_RV_Zusatz
  , lhm_routen, Netztyp_Plan, Netztyp_Plan_ID, Netztyp_Ziel, Netztyp_Ziel_ID, Strecken_Link
  ) 
select 
  rv.cartodb_id, rv.the_geom, rvm.strassenansicht_klick_mich, rvm.name, rvm.strecke, rvm.ist_situation, rvm.happy_bike_level, rvm.soll_massnahmen, rvm.massnahmen_kategorie_link, rvm.massnahmen_kategorie, rvm.kategorie_id
  , rvm.beschreibung, rvm.munichways_id, rvm.status_umsetzung, rvm.bezirk_link, rvm.neuralgischer_punkt, rvm.links
  , rvm.netztyp, rvm.plan_netztyp_id, rvm.mw_rv_strecke, rvm.rsv_strecke, rvm.viel_kfz, rvm.netztyp_id, rvm.status_id
  , rvm.Status_2019, rvm.Status_2020, rvm.Status_2021, rvm.Status_2022, rvm.Status_2023, rvm.Status_2024, rvm.Status_2025
  , rvm.restriktionen, rvm.restriktionen_bike_level, rvm.realisierung
  , rvm.Massnahmen_Blatt, rvm.Massnahmen_Index, rvm.prio_gesamt, rvm.status_netzplanung, rvm.MW_RV_Zusatz
  , rvm.lhm_routen, rvm.Netztyp_Plan, rvm.Netztyp_Plan_ID, rvm.Netztyp_Ziel, rvm.Netztyp_Ziel_ID, rvm.Strecken_Link
FROM radlvorrangnetz rv, radlvorrangnetz_masterliste_1 rvm 
where rv.cartodb_id=rvm.cartodbid_in_liste
order by rv.cartodb_id desc
;

2b Optional: Update dataset radlvorrangnetz (farbe und netztyp_id)

für korrekte Anzeige beim Editieren (falls die Farbe in der Masterliste mal geändert wurde)

* Dataset radlvorrangnetz öffnen und unten mit dem Schalter von “METADATA” auf “SQL” wechseln.

SQL-Anweisung: SQL~~ ~~update radlvorrangnetz set name=rvm.name, farbe=rvm.farbe , netztyp_plan=rvm.netztyp_plan~~ ~~FROM radlvorrangnetz_masterliste_1 rvm~~ ~~where radlvorrangnetz.cartodb_id=rvm.cartodbid_in_liste~~ ~~ Die SQL-Anweisung kopieren und einfügen. Dann auf "APPLY" unten rechts klicken. Es erscheint keine positiv Bestätigung. Wenn unten links kein Fehler angezeigt wird, wurde der SQl-Befehl ausgeführt.

3. overpass-turbo class:bicycle aus OSM exportieren

3a Köln Optional nur auf Anfrage oder bei Bedarf

genutzt in der App.

[out:json][timeout:25];
// gather results
(
  area[admin_level=5]["name"="Regierungsbezirk Köln"]->.boundaryarea;
  // query part for: “"class:bicycle"=*”
  node(area.boundaryarea)["class:bicycle"];
  way(area.boundaryarea)["class:bicycle"];
  relation(area.boundaryarea)["class:bicycle"];
);    
// print results
out body;
>;
out skel qt;
  • klicke auf "Ausführen". Auf die Frage "zu viele Daten" auf trotzdem ausführen klicken.

Exportieren als GeoJSON

  • Karte: Menü "Export" > Daten > GeoJSON > Download und lokal speichern als "osm_class_bicycle_regierungsb_koeln_V01.geojson"
  • In Carto alt als Dataset importieren, vorhandene vorher umbenennen.

### 3b Bayern veraltet genutzt in https://t1p.de/Radnetzvergleich und in IST RadlVorrang-Netz Karte

* die unten angegebene Abfrage ist bereits eingestellt in diesem Link * oder gehe zu http://overpass-turbo.eu/ und kopiere die folgende Abfrage in das Abfragefeld

[out:json][timeout:25];
// gather results
(
  area[admin_level=5]["name"="Oberbayern"]->.boundaryarea;
  // query part for: “"class:bicycle"=*”
  node(area.boundaryarea)["class:bicycle"];
  way(area.boundaryarea)["class:bicycle"];
  relation(area.boundaryarea)["class:bicycle"];
);    
// print results
out body;
>;
out skel qt;

* klicke auf "Ausführen". Auf die Frage "zu viele Daten" auf trotzdem ausführen klicken.

#### Exportieren als GeoJSON * Karte: Menü "Export" > Daten > GeoJSON > Download und lokal speichern als "osm_class_bicycle_munich_V01.geojson"

4. App_V07: GEO-JSON-Dateien exportieren

Ab 2026 alternative per github workflow: https://github.com/MunichWays/masterliste/wiki/GeoJSON-Datei-erstellen

  • Dataset radlvorrangnetz öffnen und unten mit dem Schalter von “METADATA” auf “SQL” wechseln.

- Neu V07 (06.2023): Restriktionen, Restriktionen_Bike_Level, Realisierung (für Winterdienst) sowie Status 2019-2025 (Zeitverlauf Umsetzung)

4a: App-Datei (app_V07 abgespeckt)

Nur die relevanten Felder für die App

  • neu mit OSM Daten angereichert ab 05.03.2024 und ab 23.03.2024 plus Regierungsbezirk Köln, ohne alte Carto Daten ab 20.05.2024

2023-12-27 Workaround mapillary_img_id explizit als Text ausgeben bis zum Fix in der App Version 2.0.1(25). Bug in Version 2.0.0(24)

SELECT 
0 as cartodb_id, 
m20.the_geom, 
COALESCE(m20.osm_name, m20.munichways_name, m20.osm_surface, NULL) AS name, 
  NULL as strecke, 
COALESCE(m20.munichways_mw_rv_route, '-') as MW_RV_Strecke, 
COALESCE(m20.munichways_current, CONCAT('Oberfläche: ', CONCAT_WS(', ', 
         m20.osm_surface,
         CONCAT('Ebenheit: ', m20.osm_smoothness),
         CONCAT('Straßentyp: ', m20.osm_highway)
))) AS ist_situation,
case when m20.osm_class_bicycle='3' then '3 = hervorragend = grün'
     when m20.osm_class_bicycle='2' then '2 = gemütlich = grün'
     when m20.osm_class_bicycle='1' then '1 = durchschnittlich = gelb'
     when m20.osm_class_bicycle='0' then '0 = keine Aussage'
     when osm_class_bicycle='-1' then '-1 = stressig = rot'
     when m20.osm_class_bicycle='-2' then '-2 = sehr stressig = schwarz'
     when m20.osm_class_bicycle='-3' then '-3 = Unter allen Umständen vermeiden = schwarz'
     when m20.osm_class_bicycle is null then ''
     else 'ungültiger Wert'
End happy_bike_level,
m20.munichways_target as soll_massnahmen, 
COALESCE(m20.munichways_measure_category_link, '<a href="https://www.munichways.de/infrastruktur-elemente/" target="_blank">alle Infrastruktur-Elemente </a>') as massnahmen_kategorie_link, 
m20.munichways_description as beschreibung, 
m20.munichways_id, 
m20.munichways_status_implementation as status_umsetzung,
m20.munichways_links as links, 
CASE WHEN m20.color = 'green' THEN 'grün'
     WHEN m20.color = 'yellow' THEN 'gelb'
     WHEN m20.color = 'red' THEN 'rot'
     WHEN m20.color = 'black' THEN 'schwarz'
     WHEN m20.color = 'blue' THEN 'grau' -- class:bicycle=0
     ELSE '-'
END as farbe,
COALESCE(substring(m20.munichways_mapillary_link from 'pKey=([0-9]+)'), '211265577336913')::text as mapillary_img_id,
NULL as bezirk_nummer, 
NULL as bezirk_name, 
4 as netztyp_id, 
COALESCE(m20.munichways_route_link, '<a href="https://www.munichways.de/unsere-radlvorrang-strecken/" target="_blank">-n/a-Alle-Wege </a>') as strecken_link, 
now() last_updated
FROM 
    public.ist_radlvorrangnetz_munichways_v20 m20
where m20.color <> 'blue' -- class:bicycle=0

/* ohne alte Carto Daten, weil mapping komplett
UNION ALL

SELECT 
    rv.cartodb_id, rv.the_geom, 
    rvm.name, rvm.strecke, rvm.MW_RV_Strecke, 
    rvm.ist_situation, rvm.happy_bike_level, 
    rvm.soll_massnahmen, rvm.massnahmen_kategorie_link, 
    rvm.beschreibung, 
    rvm.munichways_id, 
    rvm.status_umsetzung, 
    rvm.links, 
    rvm.farbe,
    rvm.mapillary_img_id::text as mapillary_img_id,
    rvm.bezirk_nummer, rvm.bezirk_name, 
    rvm.netztyp_id, 
    rvm.strecken_link,
    now() last_updated
FROM 
    radlvorrangnetz rv
    INNER JOIN radlvorrangnetz_masterliste_1 rvm ON rv.cartodb_id = rvm.cartodbid_in_liste 
WHERE 
    rvm.farbe <> 'grau'
    AND NOT EXISTS (
        SELECT 1 
        FROM 
            public.ist_radlvorrangnetz_munichways_v20 m20 
        WHERE 
            m20.munichways_id = rvm.munichways_id
        or m20.munichways_id like '%,%' -- 2 munichways_id doppelt gemappt
    )
ende deaktivierung alte Carto Daten */	

UNION ALL

SELECT 
0 as cartodb_id, 
rk.the_geom, 
rk.name AS name, 
NULL as strecke, 
NULL as MW_RV_Strecke, 
COALESCE(CONCAT('Oberfläche: ', CONCAT_WS(', ', 
         rk.surface,
         CONCAT('Ebenheit: ', rk.smoothness),
         CONCAT('Straßentyp: ', rk.highway)
))) AS ist_situation,
case when rk.class_bicycle='3' then '3 = hervorragend = grün'
     when rk.class_bicycle='2' then '2 = gemütlich = grün'
     when rk.class_bicycle='1' then '1 = durchschnittlich = gelb'
     when rk.class_bicycle='0' then '0 = keine Aussage'
     when rk.class_bicycle='-1' then '-1 = stressig = rot'
     when rk.class_bicycle='-2' then '-2 = sehr stressig = schwarz'
     when rk.class_bicycle='-3' then '-3 = Unter allen Umständen vermeiden = schwarz'
     when rk.class_bicycle is null then ''
     else 'ungültiger Wert'
End happy_bike_level,
NULL as soll_massnahmen, 
'<a href="https://www.munichways.de/infrastruktur-elemente/" target="_blank">alle Infrastruktur-Elemente </a>' as massnahmen_kategorie_link, 
rk.note as beschreibung, 
NULL as munichways_id, 
NULL as status_umsetzung,
NULL as links, 
CASE WHEN rk.class_bicycle in ('2', '3') THEN 'grün'
     WHEN rk.class_bicycle='1' THEN 'gelb'
     WHEN rk.class_bicycle='-1' THEN 'rot'
     WHEN rk.class_bicycle in ('-2', '-3') THEN 'schwarz'
     ELSE '-'
END as farbe,
NULL as mapillary_img_id,
NULL as bezirk_nummer, 
NULL as bezirk_name, 
4 as netztyp_id, 
NULL as strecken_link, 
now() last_updated
FROM 
    public.osm_class_bicycle_regierungsb_koeln_V01 rk
  • exportieren als GEO-JSON-Datei und lokal speichern als "radlvorrangnetz_app_V07.geojson". (V07 ab 22.11.2022 ab App-Version 1.1.2(18))

  • Alt nur Carto bis 04.03.2024:

SELECT rv.cartodb_id, rv.the_geom, rvm.name, rvm.strecke, rvm.MW_RV_Strecke, rvm.ist_situation, rvm.happy_bike_level, rvm.soll_massnahmen, rvm.massnahmen_kategorie_link, rvm.beschreibung, rvm.munichways_id, rvm.status_umsetzung, rvm.links, rvm.farbe
, rvm.mapillary_img_id::text as mapillary_img_id
, rvm.bezirk_nummer, rvm.bezirk_name, rvm.netztyp_id, rvm.strecken_link, now() last_updated
FROM radlvorrangnetz rv, radlvorrangnetz_masterliste_1 rvm 
where rv.cartodb_id=rvm.cartodbid_in_liste and rvm.farbe <> 'grau'
order by rv.cartodb_id desc

Für Apple iOS war App-Versionen V04 bis 11.2023 erforderlich:

SELECT rv.cartodb_id, rv.the_geom, rvm.name, rvm.strecke, rvm.MW_RV_Strecke, rvm.ist_situation, rvm.happy_bike_level, rvm.soll_massnahmen, rvm.massnahmen_kategorie_link, rvm.beschreibung, rvm.munichways_id, rvm.status_umsetzung, rvm.links, rvm.farbe, rvm.mapillary_img_id, rvm.bezirk_nummer, rvm.bezirk_name, rvm.netztyp_id, now() last_updated
FROM radlvorrangnetz rv, radlvorrangnetz_masterliste_1 rvm 
where rv.cartodb_id=rvm.cartodbid_in_liste and rvm.farbe <> 'grau'
order by rv.cartodb_id desc
  • exportieren als GEO-JSON-Datei und lokal speichern als "radlvorrangnetz_app_V04.geojson" (V04 ab 21.03.2021 bereit, verwendet ab App-Version 0.0.9 bis V 1.1.1(17)

### 4b: Optional Kopien für ältere Versionen * exportieren als GEO-JSON-Datei und lokal speichern als "radlvorrangnetz_masterliste_V06.geojson" (V06 01.05.2022 bis 30.05.2023) - Neu V06 (05.2022): Massnahmen_Blatt, Massnahmen_Index (aus REM-Kriterien: https://drive.google.com/drive/folders/1G8e9e_gKU5WQS6M8YMnbAdzrb0AYcmkA ) - Neu V05 (05.2022): Netztyp_Plan, Netztyp_Plan_ID, Netztyp_Ziel, Netztyp_Ziel_ID

Datei V04 (Hauptdatei 03.2021 bis 04.2022) * exportieren als GEO-JSON-Datei und lokal speichern als "radlvorrangnetz_masterliste_V04.geojson" (V04 ab 21.03.2021)

###4c masterliste_V07.geojson: SQL~~ ~~SELECT rv.cartodb_id, rv.the_geom, rvm.strassenansicht_klick_mich , rvm.name, rvm.strecke, rvm.MW_RV_Strecke, rvm.ist_situation, rvm.happy_bike_level, rvm.soll_massnahmen, rvm.massnahmen_kategorie_link, rvm.beschreibung, rvm.munichways_id , rvm.status_umsetzung, rvm.bezirk_link, rvm.links , rvm.netztyp, rvm.plan_netztyp_id, rvm.farbe, rvm.rsv_strecke, rvm.alternative, rvm.viel_Kfz , rvm.bild, rvm.mapillary_link, rvm.Mapillary_Img_ID , rvm.bezirk_region, rvm.bezirk_nummer, rvm.bezirk_name , rvm.massnahmen_kategorie , rvm.Massnahmen_Blatt, rvm.Massnahmen_Index, rvm.Prio_Gesamt, rvm.Neuralgischer_Punkt , rvm.kategorie_id, rvm.status_id, rvm.netztyp_id, rvm.Status_Netzplanung, rvm.rsv_boolean , rvm.Netztyp_Plan, rvm.Netztyp_Plan_ID, rvm.Netztyp_Ziel, rvm.Netztyp_Ziel_ID , rvm.Status_2019, rvm.Status_2020, rvm.Status_2021, rvm.Status_2022, rvm.Status_2023, rvm.Status_2024, rvm.Status_2025 , rvm.Restriktionen, rvm.Restriktionen_Bike_Level, rvm.Realisierung , now() last_updated FROM radlvorrangnetz rv, radlvorrangnetz_masterliste_1 rvm where rv.cartodb_id=rvm.cartodbid_in_liste order by rv.cartodb_id desc~~ ~~

* exportieren als GEO-JSON-Datei und lokal speichern als "radlvorrangnetz_masterliste_V07.geojson" (V07 ab 01.06.2023)

5. Upload auf FTP-Server und Download-Verzeichnis im Google-Drive

5a: FTP-Upload - ACHTUNG: 'normaler' ftp funktioniert nicht mehr, da jetzt eine SSL/TLS Verbindung benötigt wird. Unter Linux geht lftp! Neuer FTP Server wieder one SSL!

  • Per FTP-Client (Linux - Windows FileZilla?) an IP 92.205.96.52 Webspace in hosteurope anmelden.

    • FTP Webspace Verzeichnis auswählen: /munways/2/App
    • Die vorhandenen "radlvorrangnetz_masterliste_V07.geojson", "osm_class_bicycle_munich_V01.geojson" und "osm_class_bicycle_regierungsb_koeln_V01.geojson" Dateien werden in *_previous.geojson umbenannt.
    • Die lokal exportierten Dateien "radlvorrangnetz_masterliste_V07.geojson", "osm_class_bicycle_munich_V01.geojson" und "osm_class_bicycle_regierungsb_koeln_V01.geojson", auswählen (Dateigröße prüfen, sollte ähnlich groß sein) und hochladen.
    • Die "radlvorrangnetz_app_V07.geojson" ins Unterverzeichnis "save" hochladen und in "*_YYYYMMDD.geojson" umbenennen
    • Die notwendigen app Dateien müssen vor dem testen der MunichWays App und von GOAT ins übergeordentet Verzeichnis kopiert und dann umbenannt ("_YYYYMMDD") wird gelöscht) werden, sie werden dann automatisch geladen und angezeigt.
      * Die Datei "osm_class_bicycle_munich_V01.geojson" wird automatisch in Carto alle 24 Stunden syncronisiert * Das Ergebnis ist am nächsten Tag in der Carto-Karte OSM-Abgleich sichtbar in https://t1p.de/Radnetzvergleich. * Mehr Beschreibungen und Beispiele zu overpass turbo in github MunichWays OSM Wiki.
  • App testen!

    • Hinweis: Es kann einige Minuten dauern, bis die Anzeige in der App aktualisiert ist. Zum testen App starten und unter Einstellungen im Hauptmenü auf "Karte neu laden" klicken.
  • Ablage Web: https://www.munichways.de/App/

  • App:

  • GOAT: Zur Karte: https://muenchen.open-accessibility.org/

    • Klicke unten auf Layer und wähle „Street Level Quality“ – „Radwegequalität (MunichWays)“

* zusätzlich neueste masterliste in LHM Ordner hochladen * Ablage Web: https://www.munichways.de/munways/lhm (ftp client: /www/munways/lhm) * nur die aktuelle Masterliste: "radlvorrangnetz_masterliste_V....geojson"

5b: Im Google-Drive Download-Verzeichnis ablegen

Zusätzlich die lokal exportierten Dateien, "radlvorrangnetz_masterliste_V07.geojson", "radlvorrangnetz_app_V07.geojson", ~"osm_class_bicycle_regierungsb_koeln_V01.geojson" und "osm_class_bicycle_munich_V01.geojson" in unserem "Google Drive" Download-Verzeichnis unter \MunichWays_Dateien_geteilt\RadlVorrang-Netz\Download ablegen.

  • Die Masterliste verwendet Michael Hälsig für die Aktualisierung in QGIS https://radwegplanung-muenchen.de/. 2024-06-24: Michael muss noch umsteigen auf die 20er Datei. radlvorrangnetz_masterliste_V07.geojson wird ab Juni 2024 nicht mehr von uns aktualisiert.
  • Die App-Dateien sind als Backup gedacht, falls es mit den Dateien im ftp-Verzeichnis ein Problem gibt.

6. In Slack Signal veröffentlichen

Im Channel 1-1_karten das erfolgte Update melden. … und feiern! Slack Channel 1-1_karten