Trick zum schnellen Duplizieren von name tags gesucht

Hallo,

nachdem ich einige Zeit damit verbracht habe, in Kairo Geschäfte und vieles mehr zu mappen (mit lateinischen Buchstaben), ist mir aufgefallen, dass das etwas unhöflich von mir war, da der eigentliche Name ja meist auf arabisch ist, und ich wenigstens zusätzlich name:en und int_name hätte setzen sollen. Gibt es eine Möglichkeit, wie ich aus einem Tag name=… auslesen kann und gleich wieder als int_name und/oder name:en (kann ich :en weglassen, wenn int_name vorhanden ist, oder was ist besser?) speichern kann? Ich benutze JOSM.

Vielen Dank.

Welchen Tag du statt name= verwendest hängt davon ab, welcher Name in name= verwendet wird. Beispielsweise auf dem Balkan gibt es für Objekte
name:sr für den serbischen Name in kyrillischer Schrift
*name:sr_Latn *für den serbischen Name - transliteriert
und dann noch unzählige weitere übersetzte Varianten- Beispiel

Wenn du einmal entschieden hast, welchen Key du statt name= verwenden möchtest, brauchst du nur die Objekte mit “falschem” name-Key auszuwählen und den Key von *name *in den gewünschten Key zu ändern.

Du kannst auch einen Filter mit deinem Usernamen erstellen und nur deine Änderungen korrigieren

Filterkombinationen sind möglich

Bernd

Ist eine gute Frage, da die lateinische Schrift nicht beinhaltet, dass es englisch ist, ist das name:en nicht wirklich passend. Nur weil der Name in Lateinschrift ist, macht es ihn auch nicht gleich “international” (int_name). Am passendsten wäre: latin_name; name:latin; name:latn; etc. (Wobei bis jetzt gerade nur das Zweite und das gerade 7 Mal vorkommt.)

Vielen Dank für eure Antworten. Das Problem liegt nicht so sehr darin, meine von fremden Änderungen zu unterscheiden oder die korrekte Benennung herauszufinden. Ich habe 100 Geschäfte selbst erstellt und benannt. Und da ich nicht hundert Mal einen Node auswählen, Namen kopieren, int_name (oder was auch immer) erstellen, einfügen, schließen möchte, hatte ich gehofft, es gäbe vielleicht ein Plugin, Bot oder anderen Kniff, wie man diese ewig gleichen Abläufe auf einen Klick pro Node (oder mit Filtern gearbeitet sogar: pro Auswahl) reduzieren könnte.

name:latin klingt wie eine gute Lösung, aber bei gerade mal 7 Verwendungen weltweit wird es wohl niemandem nutzen, wenn ich das verwende. Wenn ich so drüber nachdenke ist :en vermutlich die beste Wahl, da es ja häufig dann “Mohammed Market” oder so heißt, also Englisch ist (ich hoffe, dass Renderer als fall back bei fremden Schriftsystemen immer nach meiner Sprache Englisch haben, oder was auch immer in lateinischen Buchstaben ist). int_name scheint auf den ersten Blick eine gute zweite, zusätzliche Wahl zu sein, weil ja gefühlt und vermutlich alle int_name lateinische Buchstaben verwenden, und nicht etwa kyrillische oder chinesische Zeichen. Insofern hat int_name doch sowieso einen lateinischen Schwerpunkt, oder? Und wenn sich dann jemand bemüßigt fühlt “Market” noch auf russisch anbieten zu wollen, der hat ja immernoch name:ru.

Aber wie bewältige ich die Menge an Ergänzungen am besten?

Wenn Du in JOSM mehrere Objekte auswählst, kannst Du Eigenschaften gemeinsam für alle ausgewählten Objekte ändern.

Wenn Die Objekte sehr stark verstreut sind, kannst Du sie auch mit der Overpass API http://wiki.openstreetmap.org/wiki/Overpass_API herunterladen und danach in
JOSM einlesen.

@ArthurLeggewie: Mit “Auswählen” ist hier “Bearbeiten/Suchen” (STRG-F) gemeint. Eine Suche im Josm auf user:ArthurLeggewie und “deine Objekte” sind aktiviert.
Und die könntest du dann in einem Rutsch ändern.

Gruss
walter

Zumindest die **TransportMap und MapQuet Open rendern beide name:en. Siehe hier am Beispiel für *place=:

http://www.osm.org/?lat=42.15401&lon=24.23073&zoom=17&layers=T

http://www.osm.org/?lat=42.15401&lon=24.23073&zoom=17&layers=Q

Aus dem Node geht eindeutig draus hervor, dass int_name anders geschrieben ist, als name:en.

Hinweis: Ляхово liegt in Bulgarien (kyrillisch).

Korrekterweise muss man sagen, dass die zweite Schreibweise *name:sr-Latn * lautet, die sich auch gegen Klammeraffe @ und Underscore _ durchgesetzt hat. Bitte nicht mit drei Buchstaben und auch in Mischschreibweise, denn das Kürzel lat bedeutet (neben der geographischen Teilkoordinate) auch die Sprache Latein. Das ganze ist im Wiki leider nicht unter http://wiki.openstreetmap.org/wiki/Key:name sondern erst unter http://wiki.openstreetmap.org/wiki/Bilingual_street_names dokumentiert. Der Ansatz unter http://wiki.openstreetmap.org/wiki/Names das romaniserte Koreanisch von ko_rm nach ko_Latn (hier tatsächlich mit Underscore) hat sich überhaupt nicht durchgesetzt.

Dumme Frage dazu: Was sagt denn der Ansatz der mehrsprachigen Karte dazu? Ich habe leider den Link gerade nicht zur Hand.

MfG Georg V. [OSM=user_5359]

Mea culpa, war ein Tippfe ler
Danke fürs Korrigieren.

Mir fallen zur Durchführung zwar mindestens drei Möglichkeiten ein (zwei davon ohne JOSM, eine nur auf einer Handvoll Rechner möglich und keine anfängertauglich) - allein der Sinn des Vorhabens erschließt sich mir nicht. Du hast ein Geschäft mit (frei erfunden) name=“Cairo Fake Adidas Outlet” getaggt und willst nun zusätzlich name:en=“Cairo Fake Adidas Outlet” setzen: Wozu das? Sinnvoll wäre allenfalls, den bisherigen englischen Namen in name:en zu verschieben und in name (ohne Sprachenzusatz) den primären, also arabischen Namen einzutragen. (Zugegeben - im Falle des frei erfundenen Beispiels mag der englische Name der Hauptname sein, weil der Laden primär an Touristen verkauft. Übertrage die Überlegung gedanklich auf ein realistisches Beispiel.) Wenn Du diesen Namen nicht kennst oder nicht schreiben kannst, erübrigt sich das Vorhaben.

Warum der englischsprachige Name eines Einzelhändlers, der außerhalb seines Stadtviertels völlig unbekannt ist, ausgerechnet als int_name (“internationale Bezeichnung”) getaggt werden sollte, ist mir erst recht rätselhaft. Wenn der Laden einen englischsprachigen “Untertitel” hat, gehört dieser in name:en und sonst nirgendwohin.

@reneman: Alle derzeitigen Layer, auch Transport/MapQuest, unter openstreetmap.org stellen wenn vorhanden zum Beispiel Straßennamen nur auf Arabisch dar, siehe hier (die Straßen mit Zahlen sind nicht auf Arabisch eingetragen).

@Oli-Wan

Der Sinn des Ganzen ist, dass ich nicht unhöflich erscheinen möchte und anderen Mappern unnötig Mühe bereiten. Als ich angefangen habe mit OSM vor gar nicht langer Zeit, und dann die ganzen Geschäfte eingetragen habe, hatte ich noch nicht viel im Wiki gelesen. Und als ich neulich über den Satz gestolpert bin, dass die grundsätzliche Sprache, die in name kommt, die Ortssprache sein soll, schon aus Höflichkeit den lokalen Mappern gegenüber, habe ich ein schlechtes Gewissen bekommen. Denn wenn nun ein arabisch sprechender Mapper die Geschäfte taggen möchte, muss er hundert mal meinen Tag auf :en umstellen. Ich möchte nicht unhöflich erscheinen, deswegen wollte ich ihr/ihm diese Arbeit abnehmen und das gleich selbst dorthin packen, wo es hingehört. Bis der hypothetische arabische Mapper kommt, wäre aber natürlich der englische Name zusätzlich auch bei name sehr sinnvoll.

Das mit dem int_name kommt daher, dass alle meine iOS auf OSM basierenden Kartenapps wenn vorhanden :de darstellen und ansonsten eben nicht :en sondern nur das Arabische, also für Touristen und andere Fremdsprachler unbenutzbar sind. Ich verstehe, was du meinst - int_name will etwas anderes (wobei “internationale Bezeichnung” ja auch schwammig genug ist), :en ist der einzig wahre Platz (neben name, solange noch kein Arabisch vorhanden ist).

Vielleicht sollte ich mehr Vertrauen in die Renderer entwickeln und hoffen, dass sie zunehmend eine zweite und dritte Sprachoption anbieten. Was das Umtaggen mit JOSM angeht habe ich gesehen, wenn man mehrere Werte markiert, kann man problemlos name auf name:en ändern. Wenn ich jetzt noch rausfinde, wie ich die gleichen Werte abermals als name wieder einfügen kann …

Auf jeden Fall vielen Dank für eure Hilfe.

Moin,

warum willst Du nach Deiner sinnvollen Korrektur von name nach name:en
nochmals entgegen den örtlichen Gepflogenheiten den name wieder in nicht-regionaler Schreibweise anfügen?

Sehe ich nicht so. Entweder gleich in Arabisch - oder weglassen. Ist jedenfalls meine Meinung.

Die Information auf Englisch bzw. in lateinischen Schriftzeichen ist ja bereits vorhanden.
Ein fehlender lokaler Name wird von allen leicht erkannt.
Du würdest dagegen sowohl humanoiden wie technischen Anwendern/Auswertern etwas vorgaukeln, was sie zusätzlich bearbeiten müssen - so sie es denn überhaupt können und nicht gleich ignorieren und belassen.

Gruß
Georg

Moins,

Ich gehe davon aus, dass Du weißt, was Du tust.

Also hier die gewünschte Anleitung (JOSM + ein Skript):

  1. Pack das Skript (weiter unten) auf Deinen Rechner.

  2. Lade die gewünschten Objekte nach OSM (z.B. per Overpass).

  3. Speichere die Ebene ab (Ebenen-Kontextmenü: Speichern unter) z.B. "orig.osm”.

  4. Lösch die Ebene. (NICHT die Objekte, sondern die Ebene).

  5. Jage die Datei durch das Skript:


perl name.pl <orig.osm >patched.osm

  1. Wichtig Guck Dir das “patched.osm” an: da ist der Wert von ”name” nach “name:en” kopiert sofern es das “name:en” noch nicht gab. Außerdem ein Feld “PATCHED=YES” gesetzt, für Schritt 9.

  2. Lade das “patched.osm” ins JOSM (Strg-O).

  3. Wichtig Guck Dir die Objekte an. Zumindest eine große Stichprobe.

  4. Selektiere die PATCHED=YES Objekte oder einfach alle Objekte, und dann lösche das PATCHED=YES.
    Damit sind die gepatchten Objekte für JOSM als geändert markiert.

  5. Lad die geänderten Objekte hoch.

Jetzt noch das Skript ”name.pl”:


#!/usr/bin/perl
use strict;
my %T;
while (<>) {
        #-----------------------------------------------------------
        #       Speichere Tag.
        #-----------------------------------------------------------

        if (m#^\s*<tag\s+k=["']([^"']*)["']\s+v=["']([^"']*)["']\s*/>\s*$#) {
                $T{$1}=$2;
                next;
        }

        #-----------------------------------------------------------
        #       Gib tagfreie Zeile aus, wenn keine Tags gespeichert
        #-----------------------------------------------------------

        if (!%T) {
                print $_;
                next;
        }

        #-----------------------------------------------------------
        #       Manipuliere die Tags
        #-----------------------------------------------------------

        if ($T{'name'} && !$T{'name:en'}) {
                $T{'name:en'} = $T{'name'};
                $T{'PATCHED'} = 'YES';
        }

        #-----------------------------------------------------------
        #       Gib die gespeicherten und manipulierten Tags aus.
        #-----------------------------------------------------------

        for my $key (sort keys %T) {
                print "<tag k=\"$key\" v=\"$T{$key}\"/>\n";
        }
        %T=();

        #-----------------------------------------------------------
        #       Gib die tagfreie Zeile aus.
        #-----------------------------------------------------------

        print $_;
}
__END__

Gruß Wolf

Hallo Wolf, vielen Dank für das Skript. Es hat wunderbar funktioniert.

Davon unabhängig finde ich natürlich GeorgFausBs Punkt sehr wichtig, und hatte noch gar nicht darüber nachgedacht - dass anhand fehlender name tags gesucht wird, was noch genauer gemappt werden muss.

Hat denn sonst noch jemand eine Meinung dazu, ob es besser wäre name frei zu lassen oder englisch zu benennen? Wie verhalten sich denn die meisten Renderer erfahrungsgemäß, wenn keine name, aber ein name:xx vorhanden ist? Gar kein Name, nur weil man als Systemsprache nicht Englisch hat, ist ja auch keine gute Lösung.

Sehe ich nicht so. Wenn ich eine Information besitze, so teile ich sie.

Arabisch ist jetzt nicht so meine Baustelle, meine Kenntnisse gehen nahe Null, aber im russischen Bereich bspw. kann ich viele Infos auf kyrillisch mappen und werde das auch in Zukunft tun (und/oder nach int/de/en/fr übersetzen). Ich würde im Traum nicht drauf kommen ein Objekt nicht zu mappen, nur weil ich den Namen in der entsprechenden Landessprache nicht weiss.

Wenn man sich die Sache von der anderen Seite aus anschaut: Ich sehe auch das Problem nicht, einen Laden um die Ecke zu haben, der (vom Inhaber oder wem auch immer) arabisch kyrillisch oder chinesisch getaggt ist, aber NICHT deutsch/int/englisch. Entweder ich (oder irgendwer) hole das nach, oder es bleibt so. Wenn jemand nach “Moskau Inkasso” sucht und im Gegensatz zu “москва инкассо” keine Ergebnisse findet, dann ist das imho ein Luxusproblem. Die Daten, wenn auch unvollständig, sind trotzdem genau da wo sie hingehören.

Moin,

vielleicht ein Missverständnis?

Die Daten sind ja auch genau da, wo sie hingehören - nämlich in name:en= (Englisch in lateinischer Schrift).
Sie sollen halt nur nicht doppelt-gemoppelt zusätzlich in name= ebenfalls auf Englisch in lateinischer Schrit eingetragen werden, da dort die arabische Variante hingehört.
Dort in name= also eben in arabisch - oder eben weglassen.

Gruß
Georg

Oops, dann habe ich das falsch verstanden.