Parameter housenumber in mkgmap erzeugt Fehler.

Nee, verstehe ich nicht. In den Daten kann ich nichts entdecken.

Wenn man die vier Straßensegmente und sonst nichts löscht, ist der Fehler weg? Diese Elemente haben ja keine Hausnummern…

Das wäre ja noch zu erklären: der parameter house numbers versucht ja, Hausnummern und Strassen einander zuzuordnen.
Es wird jedoch noch verrückter:
wenn ich in josm die untenstehenden Objekte lade, das Ergebnis als test.osm abspeichere und test.osm mit mkgmap bearbeite, entsteht der Fehler.

Der Punkt ID 1597579565 , der Punkt ID 81296249 , die Linie ID 40698993

eine hausnummer kann ich da drin auch nicht mehr entdecken???

Edit: Objekte laden mit Verweisen und Relationselementen

Hmm, dieser Punkt ist ja vollkommen leer und ohne Verweise!?

Bei mir kommt kein Fehler. Die Bearbeitung der Daten dort liegt schon länger zurück, da wäre schon eher eine Fehlermeldung aufgefallen.
Habe nun die drei Elemente mit den angegebenen IDs lt. obiger Anweisung gespeichert - kein Fehler, dann nochmal den (etwas vergrößerten) Bereich komplett gespeichert - kein Fehler.

An der Aktualität kann es nicht liegen, JOSM lädt ja höchst aktuell.
Datenfehler in der lokal gespeicherten Deutschland-Datei? - Relativ unwahrscheinlich, da sollten mehr ähnliche und auch völlig andere Fehler auftreten, eigentlich schon beim Splitten. Und der Fehler wäre in der mit JOSM gespeicherten Datei nicht vorhanden.
Die Styles “technisch” nicht in Ordnung? - andere Fehlermeldung mit gemeldeter Zeilennummer
Die Styles “logisch” nicht in Ordnung? - wohl eher Adress-Lücken ohne Fehlermeldung

Leider zu keiner Erklärung fähig.

Nachdem ich festgestellt hatte, daß bei ansonsten identischen Bedingungen ältere mkgmap Versionen den Fehler nicht erzeugen, jedoch neuere Versionen, habe ich mir die Änderungskurznotizen angeschaut. Verdächtig ist die Änderung zu 3310: "
For house number processing evaluate addr:street and mkgmap:street after and not before the style is applied
27 jun 2014 "

und tatsächlich, mkgmap-r3308 zeigt den Fehler noch nicht, jedoch mkgmap-r3310. Es scheint also an der Verarbeitung des Style files zu liegen.

Edit: tatsächlich, wenn ich die Datei “lines” sowie den ordner inc in meinem Stil mit der entsprechenden Datei/Ordner aus dem default Stil tausche, verschwindet der Fehler. Da die Dateien ziemlich gross sind, dürfte die weitere Fehlersuche ziemlich Zeitaufwendig sein.

Schonmal die -checkstyle (oder so) Option von mkgmap probiert um Deinen Style auf Fehler zu untersuchen?

Diese Option läuft standardmässsig, zeigt hier aber keine Fehler.
Ich habe inzwischen in meiner Datei " lines " grössere Bereiche identifiziert, deren Löschung den Fehler beseitigen. Weitere Einengungen erzeugen jedoch ein widersprüchliches Bild. Es scheint so, daß keine einzelne Zeile schuld ist, sondern die Kombination mehrerer Zeilen an verschiedenen Stellen.

Das hört sich sehr nach einem Problem für die mkgmap-dev Mailingliste an, am besten mal dort dein Problem schildern.

Von Mailing Listen verstehe ich gar nichts.
Ich gebe jetzt auf, denn ich kann ganz gut mit dem kleinen fehlenden Stück in Düsseldorf der Deutschlandkarte leben.
Vorher berichte ich aber noch über meinen letzten Test, der aufzeigt, daß es sich hier um einen Fehler handeln muss, den man wohl nur mit einem debugger im Programm finden kann:
Ich habe den Bereich N51.22 N51.24 E6.79 E6.81 mit josm geladen, ihn als Test.osm gespeichert und daraus mit mkgmap die karte versucht zu erzeugen. ergebnis, der übliche Fehler.
Dann habe ich im in josm geladenen Bereich nur den Punkt ID 1597579565 entfernt und das Ergebnis als test2.osm gespeichert und die karte erzeugt. jetzt entsteht eine einwandfreie Karte.
Irgendeinen Zusammenhang dieses Punktes, der keine Eigenschaften hat, mit irgendwelchen Zeilen meines Stils kann ich nun wirklich nicht erkennen. Hier scheint also ein ganz seltsames (und sehr seltenes- der Fehler tritt in ganz Deutschland ja nur einmal auf-) Zusammentreffen verschiedener Parameter im Programm aufzutreten, die ohne Debugger kaum zu finden sind.
Den Punkt ID 1597579565 könnte man meines Erachtens ersatzlos aus der Datenbank entfernen, er sollte eigentlicj keinerlei Wirkung haben. Ich lasse ihn aber mal drin, vielleicht gibt es doch jemanden der sich mit diesem Fehler weiter auseinandersetzen will. Zu einem Test bräuchte er dann meinen Stil, den er bei mir anfordern könnte.

Hi,
schreib doch ne kleine Mail an den Entwickler (WanMil, wmgcnfg bei web punkt de).

Chris

Die Ursache ist erkannt: Das Programm keepright hat mich darauf aufmerksam gemacht, daß an der Stelle des Punktes ID 1597579565 zwei Punkte genau übereinanderliegen. Wenn man in josm den Punkt anklickt, entdeckt man nur den einen. wenn man jedoch zur Auswahl bei sehr starker Vergrösserung ein Rechteck um den Punkt zieht, entdeckt man beide, und einer davon ist mit der Adresse Ackerstrasse 88 versehen. Es ist hier also ein “Weg ??” mit zwei identischen Punkten mit einer Adresse versehen. Daß mkgmap hier mit Division durch Null ( der Abstand der beiden Punkte? ) aussteigt, ist nicht verwunderlich. Offensichtlich hat der Autor beim Versuch, die Adresse Ackerstrasse 88 einzugeben, danebengeklickt.
Ich korrigiere es mal nicht, daß sich andere das seltsame Gebilde auch mal anschauen können.

Wenn Du noch Ressourcen über hast wäre es schön dies als Bug zu melden. Bevor man dividiert sollte man in Programmen stets prüfen, ob womöglich durch Null geteilt werden soll… (es sei denn der Ablauf stellt auch so sicher, dass dies gar nicht passieren kann).

Zuerst muss ich mich wohl korrigieren: Die Fehlermeldung war nicht Division durch Null, sondern Nullpointer exception. Die Division durch Null war nur mein vielleicht falscher Verdacht. Um dies als Bug zu melden, weiss ich einfach nicht präzise genug, wie der Fehler entsteht, die Verhältnisse sind noch zu komplex und es ist mir nicht gelungen, dies auf ein einfaches Modell zu reduzieren.
Ich habe den kritischen “Doppelpunkt” jetzt übrigens entfernt und die Adresse dem Gebäude zugeordnet.

Zunächst frieren wir mal den fehlerhaften Stand ein - am besten mit Overpass API: http://overpass-turbo.eu/s/4J1

In den Daten findet man in der Tat ein Problem mit Knoten 1597579565 und zwar kommt der 2x im Weg 146466703 vor, was auch der JOSM Validator bestätigt: Punkte doppelt in Linie (1). Das bringt wohl mkgmap komplett aus dem Tritt.


  <way id="146466703" version="4" timestamp="2014-04-16T12:52:13Z" changeset="21729367" uid="18130" user="black_bike">
    <nd ref="1597579565"/>
    <nd ref="1597579565"/>
    <tag k="addr:city" v="Düsseldorf"/>
    <tag k="addr:country" v="DE"/>
    <tag k="addr:housenumber" v="88"/>
    <tag k="addr:postcode" v="40233"/>
    <tag k="addr:street" v="Ackerstraße"/>
    <tag k="building" v="yes"/>
  </way>

Lässt sich der Fehler mit dem Overpass Extrakt noch reproduzieren? Wenn ja, bitte Fehlermeldung aufmachen, zur Not mit Link auf diesen Post.

Ich habe bei Haag in Oberbayern einen weiteren Fehler genau derselben Art entdeckt: Wiederum ein Weg mit zwei Punkten, welche genau übereinanderliegen,und der mit einer Adresse versehen ist.
Die Gegend: 48.159 N, 48.16 N, 12.16 E, 12.182 E. Das objekt: Weg 293260903 (nördlichstes Eck des Gasthauses Hofgarten)
Das Gasthaus Hofgarten ist als Multipolygon (!!!) eingetragen. Der Versuch, dem Multipolygon eine Adresse zuzuordnen ist offensichtlich fehlgeschlagen und hat zu dem fehlerverursachenden “Weg” geführt.
Es ist für mich nun offensichtlich, daß diese mit Adressen versehenen Doppelpunkte an derselben Stelle mein Programm im entsprechenden Segment zum Aussteigen bringt. Es scheint jedoch auch eine Abhängigkeit vom Stil zu geben, denn mit dem Versuch in meinem Stil im File " lines" grössere Bereiche an Befehlen zu löschen, konnte der Fehler vermieden werden. Es ist mir aber nicht gelungen, einzelne Befehle als Ursache zu identifizieren.
Da ich nicht weiss, wie man ein Multipolygon in ein normales Gebäude umwandelt (und zu faul bin, es zu löschen und neu einzutragen), bitte ich einen der Experten, den Fehler zu beseitigen.

Hallo opasto,

Gleiches Problem: Es ist ein und derselbe Knoten, der 2x im Weg vorkommt.

Bevor wir jetzt noch viele andere Beispiele durchprobieren, nochmal zurück zu meiner ursprünglichen Frage:

Also: Bitte dazu folgenden Link anklicken: (link), das Ergebnis in einer lokalen Datei abspeichern und mit mkgmap verarbeiten. Wahrscheinlich will dein Browser beim Herunterladen eine Datei mit dem Namen “interpreter” anlegen. Diese bitte umbenennen in eine OSM-Datei (sollte 571.018 Bytes groß sein).

Tritt der Fehler dann auch auf?

Falsch:.Nein, es wird vielmehr die Karte der Kreuzung erzeugt.

Edit: Richtig ist: der Fehler tritt immer noch auf (ich hatte zuerst vergessen, dass der Parameter Housenumbers noch entfernt war).

Hi,

ich bin eben auf diesen Thread gestossen. Ich kann das Problem nicht nachstellen. Trotzdem habe ich versucht einen Fix zu erstellen. Ich habe ihn einfach mal commited (ab mkgmap r3335 drin).

Es wäre gut, wenn Ihr Probleme bei denen Exceptions geworfen werden und mkgmap deswegen aussteigt, auf der Mailingliste berichtet. Berichte dürfen auch vermeintlich unvollständig sein. Das klärt sich schon :slight_smile:

WanMil

Problem: Als Nichtspezialist weis ich weder was die Mailingliste ist, noch wo sie zu finden ist.
Aber danke für den Versuch, den Fehler zu beheben. Die zwei in Deutschland gefundenen kritischen Stellen habe ich in der Datenbank bereits verbessert, so daß die Deutschlandkartebei mir jetzt einwandfrei läuft. Ich habe aber Kopien der beiden Stellen, so daß ich, wenn ich die Version r3335 finde, testen und hier berichten kann.

Edit: test mit 2 betroffenen Stellen erfolgreich. Es kommt eine grimmige Fehlermeldung, die Karte wird jedoch einwandfrei erzeugt. Danke an WanMil.