You are not logged in.
- Topics: Active | Unanswered
Pages: 1
#1 2017-03-30 19:04:42
- Marqqs
- Member
- Registered: 2011-01-01
- Posts: 724
primitive Tag-Änderungen mit osmconvert
Hallo zusammen,
weil ich immer mal wieder einen entsprechenden Anwendungsfall hatte, habe ich das Programm osmconvert (und osmfilter) nun um eine einfache Funktion zur Massenänderung von Tags erweitert. Bevor jetzt jemand erschrickt: Mit "Massenänderungen" sind nur Änderung auf Dateiebene gemeint. Manchmal braucht man so etwas, um die nachfolgende Verarbeitung von OSM-Daten zu vereinfachen.
Syntax:
--modify-tags="schluessel=wert to neuer_schluessel=neuer_wert"
Wildcards sind erlaubt, auch durch Weglassen von Elementen. Zum Beispiel:
--modify-node-tags="schluessel= to neuer_schluessel="
--modify-relation-tags="=wert to neuer_schluessel=neuer_wert"
--modify-tags="schluessel=wert* to neuer_schluessel=neuer_wert"
Hinzufügen von neuen Tags geht auch:
--modify-way-tags="schluessel=wert add zusatzschluessel=zusatzwert"
Wie schon von osmfilter her bekannt, sind auch Vergleiche möglich:
--modify-node-tags="maxheight<2 add kopf_einziehen=yes"
Hab mir gedacht, ich sag hier Bescheid, vielleicht braucht auch jemand anders sowas – oder hat weitere Ideen dazu – oder weiß, wie es viel einfacher gegangen wäre. :-)
Grüße
Markus
Offline
#2 2017-04-03 22:46:06
- wambacher
- Member
- From: Schlangenbad/Wambach, Germany
- Registered: 2009-12-16
- Posts: 16,612
- Website
Re: primitive Tag-Änderungen mit osmconvert
weil ich immer mal wieder einen entsprechenden Anwendungsfall hatte, habe ich das Programm osmconvert (und osmfilter) nun um eine einfache Funktion zur Massenänderung von Tags erweitert.
Schön, aber wenn du deine Wikiseite etwas pflegen würdest was die Versionen betrifft, hätte ich das auch in die Releases-Tabelle der Wochennotiz und der WeeklyOSM übernehmen können. Ansonsten dauert das mal wieder mehrere Jahre, bis plötzlich irgendwo eine Mail oder wie hier ein Forenbeitrag auftaucht, der dann zufälligerweise zu mir findet. Eigentlich schade für so ein wichtiges Programm.
Gruss
walter
Offline
#3 2017-04-04 06:04:37
- Marqqs
- Member
- Registered: 2011-01-01
- Posts: 724
Re: primitive Tag-Änderungen mit osmconvert
Hallo Walter,
da hast du Recht, für die einzelnen Programme (osmconvert, osmfilter, osmupdate) gibt es kein vernünftiges Changelog. :-(
Was es aber wenigstens gibt, ist eine grobe Übersicht im Repository, denn nach allen größeren Änderungen wird eine neue "osmctools"-Version erstellt, die dann auch Eingang in die Debian-Welt findet und dort als Paket zur Verfügung steht.
https://gitlab.com/osm-c-tools/osmctools/tags
https://packages.debian.org/experimental/osmctools
Viele Grüße
Markus
Offline
#4 2017-04-04 08:40:43
- toc-rox
- Member
- From: Münster
- Registered: 2011-07-20
- Posts: 2,240
- Website
Re: primitive Tag-Änderungen mit osmconvert
Erstmal finde ich es gut, dass du die Programme osmconvert und osmfilter kontinuierlich pflegst. Für die Freizeitkarte-Android verwende ich osmfilter um Objekte (beliebig) manipulieren zu können. Hierbei werden die Tags eines Objektes ganzheitlich betrachtet. Sowohl die Keys, als auch die Values der Tags, können verändert werden. Ebenso können neue Tags hinzugefügt, oder vorhandene Tags gelöscht werden. Hier mal ein Code-Beispiel: name="Gasthof Meier" -> name="3* Gasthof Meier"
...
// Hotel ohne Restaurant (mit Beruecksichtigung der Hotel-Kategorie)
else if ( TAG_EXISTS(tourism, "hotel") && KEY_EXISTS(stars) && KEY_EXISTS(name) ) {
FOR_ALL_TAGS
if (strcmp (*keyp, "name") == 0) {
snprintf (fzk_value, sizeof(fzk_value), "%s* %s", valp_stars, *valp);
TAG_WRITE(*keyp, fzk_value)
}
else {
TAG_WRITE(*keyp, *valp)
}
END_FOR_ALL_TAGS
}
...
Anregung für die Nice-To-Have-Liste: Implementierung eines allgemein gültigen Regelwerkes zur (ganzheitlichen) Manipulation von OSM-Objekten. Vermutlich ist das aber alles andere als trivial und nicht mal "so schnell" implementiert.
Gruß Klaus
Online
#5 2017-04-04 14:16:05
- wambacher
- Member
- From: Schlangenbad/Wambach, Germany
- Registered: 2009-12-16
- Posts: 16,612
- Website
Re: primitive Tag-Änderungen mit osmconvert
Was es aber wenigstens gibt, ist eine grobe Übersicht im Repository, denn nach allen größeren Änderungen wird eine neue "osmctools"-Version erstellt, die dann auch Eingang in die Debian-Welt findet und dort als Paket zur Verfügung steht.
Kurz was zur Technik, mit der ich die Releases-Liste für meine Webseite, die Wochennotiz und weeklyOSM erstelle:
Ich habe eine Tabelle mit zu beobachtender Software bestehend aus u.a. einem Url der zu überprüfenden Seite und einem eindeutigen Pattern, was sich auf dieser Seite befindet oder befinden sollte.
Dazu lasse ich am Montag einen Job laufen, der überprüft, ob sich dieses Pattern immer noch auf der Webseite befindet. Wenn ja, ist alles ok und wenn nein, muss ich halt manuell nachsehen, was sich geändert hat.
Typisch: von derzeit 100 überwachten Softwareprodukten haben sich in der letzten Woche genau 14 geändert.
Ich kann aber nur prüfen, ob dieses Pattern existiert oder nicht.
Beispiel: Auf meiner Github-Seite https://github.com/wambacher/NoFarm (und auf fast allen anderen Github-Seiten) ändert sich der "N releases" - String, wenn eine neue Release freigegeben wird.
Leider kann ich das auf Gitlab nirgendwo finden.
Auf der Tags-Seite von Gitlab wird wohl irgendwann "0.8" auftauchen, aber das "0.7" bleibt weiterhin dort stehen. Pech für mich
Auch auf allen anderen Gitlab-Seiten finde ich keinen Hinweis auf die "current release" - wenn ich da was übersehen hab, bitte Info. Dann wäre das Problem erledigt.
Vorschlag: Erstelle ein README, wo ein Satz zur aktuellen Release drin steht und das würde allen helfen: https://gitlab.com/osm-c-tools/osmctools. oder schreib es ins Wiki. Egal wo, nur an einem festen Platz.
Danke und Gruss
walter
Last edited by wambacher (2017-04-04 14:17:59)
Offline
#6 2017-04-04 19:04:20
- MKnight
- Member
- Registered: 2012-08-01
- Posts: 2,154
Re: primitive Tag-Änderungen mit osmconvert
Leider kann ich das auf Gitlab nirgendwo finden.
Ein Feed reicht Dir nicht? Oder ein Mailabo?
gesammelte Overpass-abfragen zu QA (hauptsächlich Strassenfehler) + verschiedene Stats zu Strassen-eigenschaften
Offline
#7 2017-04-04 19:10:24
- wambacher
- Member
- From: Schlangenbad/Wambach, Germany
- Registered: 2009-12-16
- Posts: 16,612
- Website
Re: primitive Tag-Änderungen mit osmconvert
wambacher wrote:Leider kann ich das auf Gitlab nirgendwo finden.
Ein Feed reicht Dir nicht? Oder ein Mailabo?
Nein. Und warum, steht oben.
Last edited by wambacher (2017-04-04 19:11:02)
Offline
#8 2017-04-05 06:42:46
- Marqqs
- Member
- Registered: 2011-01-01
- Posts: 724
Re: primitive Tag-Änderungen mit osmconvert
Hallo Klaus,
sehr schön gemacht! Sogar anwenderfreundlich mit geschickten Code-Makros.
Hab mir deinen Vorschlag gestern mal durch den Kopf gehen lassen, aber du hast wohl recht, das ufert aus. Wenn man die Funktion wirklich universell einbauen wollte, landet man sehr schnell bei einem Interpreter, und das widerspricht dem grundsätzlichen Ansatz des Programms, das ja schnell sein will. Bleibt noch der Weg über einen automatisch selbstgenerierten Code, aber das wäre wirklich etwas Größeres...
Hallo Walter,
danke für die ausführliche Erklärung zu deiner Versionsauswertung!
Die gitlab-Seite hat einen solchen Release-Zähler leider wirklich nicht, und um ein Readme müsste ich mich dringend kümmern. Aber vielleicht könntest du auf https://gitlab.com/osm-c-tools/osmctools/tags nach dem ersten Vorkommen von "tags/" suchen. Direkt danach steht dann die aktuelle Versionsnummer. Beispiel:
<a href="/osm-c-tools/osmctools/tags/0.7"><span class="item-title">
Das wären dann aber nur die größeren Paketänderungen.
Für kleinere Änderungen/Bugfixes/Erweiterungen müsste man auf die Programme selbst schauen. Falls dein Scan gescriptet ist, kriegst du die Versionsnummer direkt aus dem Quellcode der Programme. Beispiel:
wget -q m.m.i24.cc/osmconvert.c -O -|head|grep VERSION|cut -d \" -f 2
Desgleichen für "osmfilter.c" und "osmupdate.c". Wäre das ein Weg?
Last edited by Marqqs (2017-04-05 06:44:22)
Offline
#9 2017-04-05 07:49:56
- Garmin-User
- Member
- Registered: 2009-10-01
- Posts: 645
Re: primitive Tag-Änderungen mit osmconvert
Eine weitere Möglichkeit, derer ich mich bediene um auf neue Versionen zu checken, wäre folgender Aufruf:
wget --quiet --server-response --spider m.m.i24.cc/osmconvert.c 2>&1 | grep "Last-Modified:" | grep -o "[0-9]* [A-Z[[a-z]* [0-9]*"
Lässt sich auch hervorragend mittels $(...) in eine Variable packen.
Grüße
Mario
Offline
#10 2017-04-05 11:39:57
- wambacher
- Member
- From: Schlangenbad/Wambach, Germany
- Registered: 2009-12-16
- Posts: 16,612
- Website
Re: primitive Tag-Änderungen mit osmconvert
Aber vielleicht könntest du auf https://gitlab.com/osm-c-tools/osmctools/tags nach dem ersten Vorkommen von "tags/" suchen. Direkt danach steht dann die aktuelle Versionsnummer.
Nee, ich kann (mit meinem jetzigen Script) nur auf existiert/existiert schauen.
Falls dein Scan gescriptet ist, kriegst du die Versionsnummer direkt aus dem Quellcode der Programme. ... Wäre das ein Weg?
Technisch schon aber ich werde den Aufwand wohl nicht treiben. Ich kann es wirklich nicht verstehen, wieso ein winziges README oder ein Satz im Wiki nicht machbar sein soll. Schliesslich haben deine Anwender genauso ein Problem, falls sie die Gitlab-Seite nicht kennen.
Gruss
walter
Offline
#11 2017-04-05 12:20:39
- Marqqs
- Member
- Registered: 2011-01-01
- Posts: 724
Re: primitive Tag-Änderungen mit osmconvert
Technisch schon aber ich werde den Aufwand wohl nicht treiben. Ich kann es wirklich nicht verstehen, wieso ein winziges README oder ein Satz im Wiki nicht machbar sein soll. Schliesslich haben deine Anwender genauso ein Problem, falls sie die Gitlab-Seite nicht kennen.
Ist doch kein Problem. Ich sag ja, ich muss mich dringend drum kümmern und werde das auch tun. Als vorläufiges Mini-Readme habe ich ein paar Zeilen reingestellt, in denen auch die aktuelle Versionsnummer genannt wird. Ist das Format so in Ordnung?
Offline
#12 2017-04-05 13:21:18
- wambacher
- Member
- From: Schlangenbad/Wambach, Germany
- Registered: 2009-12-16
- Posts: 16,612
- Website
Re: primitive Tag-Änderungen mit osmconvert
Als vorläufiges Mini-Readme habe ich ein paar Zeilen reingestellt, in denen auch die aktuelle Versionsnummer genannt wird. Ist das Format so in Ordnung?
Absolut, Danke
und wenn du das Format änderst (z.B. Current Version: 0.7 ---> Current version is 0.7) krieg ich das auch mit, da ich halt den ganzen String abfrage.
Gruss
walter
Offline
#13 2017-04-05 13:35:12
- wambacher
- Member
- From: Schlangenbad/Wambach, Germany
- Registered: 2009-12-16
- Posts: 16,612
- Website
Offline
#14 2017-04-06 16:02:21
- Marqqs
- Member
- Registered: 2011-01-01
- Posts: 724
Re: primitive Tag-Änderungen mit osmconvert
Sauber! Du hast die Auswertung wirklich professionell aufgezogen. :-)
Bei den Plattformen bin ich mir selber nicht so ganz sicher. Da sind zum einen die Architekturen, für die es Debian-Pakete gibt ( https://packages.debian.org/search?keyw … ection=all ), zum anderen die üblichen Verdächtigen wie Windows und Mac (eine Version für OS X von User:MotorKUH wurde im Wiki verlinkt).
Offline
#15 2017-04-06 17:01:41
- kreuzschnabel
- Member
- Registered: 2015-07-03
- Posts: 6,640
Re: primitive Tag-Änderungen mit osmconvert
So sehen die Basisdaten bei mir jetzt aus.
Der Versionscheck-URL sieht mir noch ein wenig merckgewürtzig aus.
--ks
Offline
#16 2017-04-06 18:52:12
- wambacher
- Member
- From: Schlangenbad/Wambach, Germany
- Registered: 2009-12-16
- Posts: 16,612
- Website
Re: primitive Tag-Änderungen mit osmconvert
Der Versionscheck-URL sieht mir noch ein wenig merckgewürtzig aus.
Geh mal einfach davon aus, dass der noch länger ist.
Gruss
wal
Last edited by wambacher (2017-04-06 18:52:41)
Offline
#17 2017-04-06 18:55:21
- mmd
- Member
- Registered: 2010-11-06
- Posts: 1,814
Re: primitive Tag-Änderungen mit osmconvert
kreuzschnabel wrote:Der Versionscheck-URL sieht mir noch ein wenig merckgewürtzig aus.
Geh mal einfach davon aus, dass der noch länger ist.
Warum nicht gleich auf den Punkt kommen? Das http://wik am Anfang ist einfach zu viel und muss weg.
Eigentlich wollte ich ja zum Thema des Threads etwas schreiben: osm2pgsql hat bspw. ein generisches Tag rewriting auf Basis von lua drin. Ist wahrscheinlich für osmconvert dennoch Overkill, obwohl es zumindest ohne neukompilieren auskommen würde.
Last edited by mmd (2017-04-06 20:28:37)
Offline
#18 2017-04-06 20:43:12
- wambacher
- Member
- From: Schlangenbad/Wambach, Germany
- Registered: 2009-12-16
- Posts: 16,612
- Website
Re: primitive Tag-Änderungen mit osmconvert
Warum nicht gleich auf den Punkt kommen? Das http://wik am Anfang ist einfach zu viel und muss weg.
tnx.
Offline
#19 2017-04-06 20:47:12
- kreuzschnabel
- Member
- Registered: 2015-07-03
- Posts: 6,640
Re: primitive Tag-Änderungen mit osmconvert
Sorry. Ich dachte, das fällt auf.
--ks
Offline
Pages: 1