Toponyme mit 2 gebräuchlichen Namen

Es gibt manchmal Toponyme (Berggipfel, Bäche) welche zwei verschiedene, in etwa gleich gebräuchliche Namen haben.

Ein Beispiel ist z.b. der Leonsberg (Zimnitz) bei Bad Ischl https://de.wikipedia.org/wiki/Zimnitz mit Node https://www.openstreetmap.org/node/26863536
In OSM ist er derzeit mit name=“Leonsberg” + alt_name=“Zimnitz”.
Findbar per Nominatim sind also beide Bezeichnungen, aber lesbar in einer Karte nur eine.

Beide Bezeichnungen sind gleich gebräuchlich, Wanderwegweiser enthalten mal den einen, mal den anderen Namen - je nach Aufstiegsgebiet. Manchmal auch beide Bezeichnungen zusammen mit einem Namen in Klammer. In Non-OSM Karten sind eigentlich immer beide Namen eingezeichnet. Das ist bei OSM-basierten Karten nicht der Fall, somit scheint einer der beiden Namen überhaupt nicht auf - was durchaus ein Nachteil von OSM basierten Karten ist.

Abgesehen vom oft üblichen Argument “…wir taggen nicht für Renderer…”: Wäre in solchen Fällen nicht ein etwas pragmatischer Ansatz eine Idee, dass man in den “name”-tag beide Namen in Form von “Leonsberg (Zimnitz)” hinein gibt? Die Kartenanzeige würde dadurch profitieren, per Nominatim findbar wären weiterhin beide Bezeichnungen.

Wie ist da eure Meinung? Strikte Trennung der beiden Bezeichnungen in unterschiedliche tags auf Kosten der Anzeige in Karten - oder nicht?

das sieht für mich nicht nach Gleichberechtigung aus, und es ist auch nicht klar, dass Zimnitz eine Alternative für Leonsberg ist, eher analog wie Frankfurt (Main)

Das kann man allerdings mit den aktuellen Daten bereits so machen, ggf. mal bei OpenStreetMap Carto nachfragen, was sie davon halten.

Bei Gleichberechtigung würde ich eher
Leonsberg / Zimnitz erwarten.

Gleichberechtigung ist mit " name=“Leonsberg” + alt_name=“Zimnitz” " bereits gegeben. Alles andere wäre Erfassen für den (speziellen) Renerer. Wenn der das nicht lesen und dann darstellen will oder kann, sollte der Anwender, der das gerne auf der von ihm gewählten “Karte” sehen will, sein Anliegen bei dem Kartenersteller und nicht bei den Datenerfassern vorbringen!

… meint Uwe

Ich hab mal ein paar Gipfel in der Nähe angesehen. In die Darstellung von alt_name würde ich als Kartenersteller keine Arbeit reinstecken. Die meisten name/alt_name-Kombiantionen davon sind gar nicht völlig andere Namen so wie im Ausgangspost. Zu viele sind einfach andere Schreibweisen, oft nur ein Buchstabe weniger, oder man wollte irgendeinen Namenszusatz noch unterbringen.


  osm_id   |                 name                 |            alt_name            
------------+--------------------------------------+--------------------------------
  659580881 | Mittlere Arnspitze                   | Mittlere Ahrnspitze
  659580779 | Arnkopf                              | Ahrnkopf
  429230836 | Seewandköpfl                         | Seewand
 1075941409 | Braggstein                           | Pragstein
  507594558 | Laubwand                             | Lawand
 2901766935 | Graslitzen                           | Graslitzen Westgipfel
  672703932 | Winnebacher Weißkogel                | Winnebacher Weißkogl
 1567673459 | Gaiskogel                            | Gaißkogel
  659580880 | Arnplattenspitze (Hintere Arnspitze) | Ahrnplattenspitze
 3045856733 | Zwieselberg                          | Vollhügel
 2690057259 | Matekopf                             | Frommes Kreuz
   94950233 | Südliche Valvelspitze                | Valvelspitze
 1770485972 | Erlbergkopf                          | Irlberg Spitz
  804162250 | Kummenberg                           | Kummaberg
 2859707901 | Baumgartenköpfl                      | Brennender Palven
 6468166498 | Ritterspitze                         | Ritterspitzen
   26863147 | Heukuppe                             | Rax
 5864224466 | Weberstein                           | Blasstein

(völlig willkürliche Auswahl und nur Namen, die mir deutschsprachig vorkommen)

Der derzeitige Zustand von alt_name ist jedenfalls nicht geeignet, einen zweiten, gleichberechtigten aber völlig anderen Namen anzuzeigen…

Grüße
Max

Nachtrag: waterway=stream, da scheint es mehr Unterschiede zu geben, aber das Problem ist ähnlich:


 osm_id   |         name          |            alt_name             
-----------+-----------------------+---------------------------------
 209962515 | Blachfelder Gießen    | Lehnbach, Schindeltalbach
 840609583 | Klausbach             | Ackergraben
 118759858 | Schwarza              | Trauchbach
 168741004 | Nassbach              | Naßbach
 184011394 | Heidbach              | Haidbach
 184011425 | Sierning              | Sierningbach
  31777262 | Rumer Bach            | Rumer Mure
 115551659 | Emmebach              | Hobbach
 378365799 | Aubach                | Aubächl
 158015599 | Weißenbach            | Habersauerbach
  93406209 | Habicher Seebach      | Tumpenbach
 202776295 | Niedertalbach         | Spiegelache
 207448618 | Viggarbach            | Mühltaler Bach

Wo es sich nur um Varianten der Schreibweise desselben Namens handelt kann man diese vorher rausfiltern, damit wird man zwar vermutlich auch ein paar wenige false positives “entdecken”, aber unterm Strich würden, wie auch Deine Beispiele zeigen, einige mutmaßlich nützliche Alternativen angezeigt werden können (sofern Platz ist :wink: )

viele der oben aufgeführten alt_name scheinen mir Kandidaten zu sein, wo wahrscheinlich old_name oder loc_name richtiger wäre.

viele der oben aufgeführten alt_name scheinen mir Kandidaten zu sein, wo wahrscheinlich old_name oder loc_name richtiger wäre.

Naja, man könnte es schon lösen. Beispielsweise kann man ja technisch prüfen, in wiefern halt zwei Zeichenketten ähnlich sind. Mir fielen da jetzt z.B. in PHP die Funktionen similar_text und levenshtein ein. Wenn man z.B. definiert, dass “name / alt_name” halt rauskommt, wenn similar_text <= 5 ist bzw. levenshtein > 4 dann kommt das raus:


id         | name                                 | alt_name                  | similar_text                                         | levenshtein                                                    | 
659580881  | Mittlere Arnspitze                   | Mittlere Ahrnspitze       | 18 =>                                                | 1 =>                                                           | 
659580779  | Arnkopf                              | Ahrnkopf                  | 7 =>                                                 | 1 =>                                                           | 
429230836  | Seewandköpfl                         | Seewand                   | 7 =>                                                 | 6 => Seewandköpfl / Seewand                                    | 
1075941409 | Braggstein                           | Pragstein                 | 8 =>                                                 | 2 =>                                                           | 
507594558  | Laubwand                             | Lawand                    | 6 =>                                                 | 2 =>                                                           | 
2901766935 | Graslitzen                           | Graslitzen Westgipfel     | 10 =>                                                | 11 => Graslitzen / Graslitzen Westgipfel                       | 
672703932  | Winnebacher Weißkogel                | Winnebacher Weißkogl      | 21 =>                                                | 1 =>                                                           | 
1567673459 | Gaiskogel                            | Gaißkogel                 | 8 =>                                                 | 2 =>                                                           | 
659580880  | Arnplattenspitze (Hintere Arnspitze) | Ahrnplattenspitze         | 16 =>                                                | 21 => Arnplattenspitze (Hintere Arnspitze) / Ahrnplattenspitze | 
3045856733 | Zwieselberg                          | Vollhügel                 | 2 => Zwieselberg / Vollhügel                         | 10 => Zwieselberg / Vollhügel                                  | 
2690057259 | Matekopf                             | Frommes Kreuz             | 1 => Matekopf / Frommes Kreuz                        | 12 => Matekopf / Frommes Kreuz                                 | 
94950233   | Südliche Valvelspitze                | Valvelspitze              | 12 =>                                                | 10 => Südliche Valvelspitze / Valvelspitze                     | 
1770485972 | Erlbergkopf                          | Irlberg Spitz             | 7 =>                                                 | 6 => Erlbergkopf / Irlberg Spitz                               | 
804162250  | Kummenberg                           | Kummaberg                 | 8 =>                                                 | 2 =>                                                           | 
2859707901 | Baumgartenköpfl                      | Brennender Palven         | 5 => Baumgartenköpfl / Brennender Palven             | 15 => Baumgartenköpfl / Brennender Palven                      | 
6468166498 | Ritterspitze                         | Ritterspitzen             | 12 =>                                                | 1 =>                                                           | 
26863147   | Heukuppe                             | Rax                       | 0 => Heukuppe / Rax                                  | 8 => Heukuppe / Rax                                            | 
5864224466 | Weberstein                           | Blasstein                 | 5 => Weberstein / Blasstein                          | 5 => Weberstein / Blasstein                                    | 
209962515  | Blachfelder Gießen                   | Lehnbach, Schindeltalbach | 5 => Blachfelder Gießen / Lehnbach, Schindeltalbach  | 21 => Blachfelder Gießen / Lehnbach, Schindeltalbach           | 
840609583  | Klausbach                            | Ackergraben               | 2 => Klausbach / Ackergraben                         | 10 => Klausbach / Ackergraben                                  | 
118759858  | Schwarza                             | Trauchbach                | 3 => Schwarza / Trauchbach                           | 8 => Schwarza / Trauchbach                                     | 
168741004  | Nassbach                             | Naßbach                   | 6 =>                                                 | 2 =>                                                           | 
184011394  | Heidbach                             | Haidbach                  | 7 =>                                                 | 1 =>                                                           | 
184011425  | Sierning                             | Sierningbach              | 8 =>                                                 | 4 =>                                                           | 
31777262   | Rumer Bach                           | Rumer Mure                | 6 =>                                                 | 4 =>                                                           | 
115551659  | Emmebach                             | Hobbach                   | 4 => Emmebach / Hobbach                              | 4 =>                                                           | 
378365799  | Aubach                               | Aubächl                   | 5 => Aubach / Aubächl                                | 3 =>                                                           | 
158015599  | Weißenbach                           | Habersauerbach            | 6 =>                                                 | 8 => Weißenbach / Habersauerbach                               | 
93406209   | Habicher Seebach                     | Tumpenbach                | 5 => Habicher Seebach / Tumpenbach                   | 11 => Habicher Seebach / Tumpenbach                            | 
202776295  | Niedertalbach                        | Spiegelache               | 7 =>                                                 | 8 => Niedertalbach / Spiegelache                               | 
207448618  | Viggarbach                           | Mühltaler Bach            | 5 => Viggarbach / Mühltaler Bach                     | 10 => Viggarbach / Mühltaler Bach                              | 

Und das sieht schon recht tauglich aus, um halt wirklich nur dann beide Namen (gleichwertig) anzuzeigen, wenn diese sich halt auch deutlich unterscheiden - unabhängig natürlich von der Frage, ob es nicht richtiger weise ein old_/loc_name wäre.

Will damit sagen: Machbar wäre es für Renderer durchaus schon, auch mit dem aktuell häufigen ähnlichen Werten in name/alt_name.
Edit: Mir ist bewusst, dass diese Quick&Dirty-Implementierung nicht allgemeingültig für internationalen Sprachraum sein wird, etc. pp. Klar, wird man da noch mehr Entwicklungsaufwand als Renderer reinstecken müssen, aber es ginge halt theoretisch ohne an den OSM-Daten irgendwas zu ändern (wie es halt der Themenersteller vorschlug). Darauf will ich halt hinaus, dass es also für solche Wertänderungen (“für den Renderer”) auch aus diesem Grunde eigentlich eben kein Grund gibt.

Gruß,
asca

PS: Quick&Dirty-PHP-Code mit jeweils Kommentaren zu den Abschnitten:

<?php
// Hilfsfunktion weil PHP nunmal PHP ist ;-)
function mb_str_pad ($input, $pad_length, $pad_string=" ", $pad_style=STR_PAD_RIGHT, $encoding="UTF-8") { 
   return str_pad($input, strlen($input)-mb_strlen($input,$encoding)+$pad_length, $pad_string, $pad_style); 
} 

// Definition der Werte:
$examples = array(
  "659580881" => array("name"=>"Mittlere Arnspitze", "alt_name"=>"Mittlere Ahrnspitze"),
  "659580779" => array("name"=>"Arnkopf", "alt_name"=>"Ahrnkopf"),
  "429230836" => array("name"=>"Seewandköpfl", "alt_name"=>"Seewand"),
  "1075941409" => array("name"=>"Braggstein", "alt_name"=>"Pragstein"),
  "507594558" => array("name"=>"Laubwand", "alt_name"=>"Lawand"),
  "2901766935" => array("name"=>"Graslitzen", "alt_name"=>"Graslitzen Westgipfel"),
  "672703932" => array("name"=>"Winnebacher Weißkogel", "alt_name"=>"Winnebacher Weißkogl"),
  "1567673459" => array("name"=>"Gaiskogel", "alt_name"=>"Gaißkogel"),
  "659580880" => array("name"=>"Arnplattenspitze (Hintere Arnspitze)", "alt_name"=>"Ahrnplattenspitze"),
  "3045856733" => array("name"=>"Zwieselberg", "alt_name"=>"Vollhügel"),
  "2690057259" => array("name"=>"Matekopf", "alt_name"=>"Frommes Kreuz"),
  "94950233" => array("name"=>"Südliche Valvelspitze", "alt_name"=>"Valvelspitze"),
  "1770485972" => array("name"=>"Erlbergkopf", "alt_name"=>"Irlberg Spitz"),
  "804162250" => array("name"=>"Kummenberg", "alt_name"=>"Kummaberg"),
  "2859707901" => array("name"=>"Baumgartenköpfl", "alt_name"=>"Brennender Palven"),
  "6468166498" => array("name"=>"Ritterspitze", "alt_name"=>"Ritterspitzen"),
  "26863147" => array("name"=>"Heukuppe", "alt_name"=>"Rax"),
  "5864224466" => array("name"=>"Weberstein", "alt_name"=>"Blasstein"),
  "209962515" => array("name"=>"Blachfelder Gießen", "alt_name"=>"Lehnbach, Schindeltalbach"),
  "840609583" => array("name"=>"Klausbach", "alt_name"=>"Ackergraben"),
  "118759858" => array("name"=>"Schwarza", "alt_name"=>"Trauchbach"),
  "168741004" => array("name"=>"Nassbach", "alt_name"=>"Naßbach"),
  "184011394" => array("name"=>"Heidbach", "alt_name"=>"Haidbach"),
  "184011425" => array("name"=>"Sierning", "alt_name"=>"Sierningbach"),
  "31777262" => array("name"=>"Rumer Bach", "alt_name"=>"Rumer Mure"),
  "115551659" => array("name"=>"Emmebach", "alt_name"=>"Hobbach"),
  "378365799" => array("name"=>"Aubach", "alt_name"=>"Aubächl"),
  "158015599" => array("name"=>"Weißenbach", "alt_name"=>"Habersauerbach"),
  "93406209" => array("name"=>"Habicher Seebach", "alt_name"=>"Tumpenbach"),
  "202776295" => array("name"=>"Niedertalbach", "alt_name"=>"Spiegelache"),
  "207448618" => array("name"=>"Viggarbach", "alt_name"=>"Mühltaler Bach")
);

// Eigentliche Berechnung der Unterschiede:
foreach($examples as $example_id => $example) {
  $similar_text = similar_text($example["name"], $example["alt_name"]);
  $examples[$example_id]["similar_text"] = $similar_text . " => ". ($similar_text<=5 ? $example["name"] . " / " . $example["alt_name"] : "");
  
  $levenshtein = levenshtein($example["name"], $example["alt_name"]);
  $examples[$example_id]["levenshtein"] = $levenshtein . " => ". ($levenshtein>4 ? $example["name"] . " / " . $example["alt_name"] : "");
}
echo "\n";

// Berechnung der Maximal-Breiten der jeweiligen "CSV"-Zellen:
$maxlengths = array("id"=>0, "name"=>0, "alt_name"=>0, "similar_text"=>0, "levenshtein"=>0);
foreach($examples as  $example_id => $example) {
  foreach($maxlengths as $name => $value) {
    if($value < strlen($name=="id"?$example_id:$example[$name])) {
      $maxlengths[$name] = strlen($name=="id"?$example_id:$example[$name]);
    }
  }
}

// Ausgabe der Kopfzeilen:
foreach($maxlengths as $name => $value) {
  echo mb_str_pad($name, $value) . " | ";
}
echo "\n";

// Ausgabe der Werte:
foreach($examples as $example_id => $example) {
    foreach($maxlengths as $name => $value) {
    echo mb_str_pad($name=="id"?$example_id:$example[$name], $value) . " | ";
  }
  echo "\n";
} 

?>