x

Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl


  1. Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl · rayquaza (Gast) · 28.05.2013 10:29 · [flux]

    Ich wollte zum Extrahieren und Konvertieren einzelner Relationen ins .poly-Format das hier gefundene Skript getbound.pl nutzen. Leider erhalte ich von diesem nur Fehlermeldungen.

    Unter Windows 7 unter Nutzung von Strawberry Perl:

    perl getbound.pl -file europe-latest.osm.pbf -o poly/LU_0.poly 28711 wrote:

    Unable to load aliases from aliases.yml: Can't open 'aliases.yml' for input: No such file or directory at C:/Users/username/Downloads/strawberry-perl-5.18.0.1-64bit-portable/perl/vendor/lib/YAML/XS.pm line 46.
    Entity: line 1: parser error : Document is empty

    ^
    Entity: line 1: parser error : Start tag expected, '<' not found

    ^

    Die genannte Datei enthält Perl-Code und ist 6KB gross.

    Unter einem frisch installierten Arch Linux:

    ./getbound.pl -file europe-latest.osm.pbf -o poly/LU_0.poly 28711 wrote:

    Can't locate LWP/UserAgent.pm in @INC (@INC contains: /usr/lib/perl5/site_perl /usr/share/perl5/site_perl /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5/core_perl /usr/share/perl5/core_perl .) at ./getbound.pl line 5.
    BEGIN failed--compilation aborted at ./getbound.pl line 5.

    Lässt sich zumindest eines der beiden Probleme einfach beheben und wenn ja wie oder gibt es eine andere per Script nutzbare Möglichkeit ohne grösseren Aufwand (=nur ein Konvertiervorgang/kein vorheriges zusätzliches Extrahieren in eine temporäre Datei, unter Windows kein zusätzlicher Scriptinterpreter o.Ä. nötig (ausgenommen Perl), …) eine .poly-Datei aus Multipolygonen einer .osm.pbf-Datei zu erstellen?


    • Re: Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl · wambacher (Gast) · 28.05.2013 11:49 · [flux]

      Da du mit Josm schaffst: Ich mach das mit josm
      - poly-plugin installieren

      - Relation mit "Datei/Objekt herunterladen" runterladen
      - eventuelle centre_nodes und kleinere inner/outer rausschmeissen, sodaß nur der "große Umriss" übrigbleibt
      - alles auswählen (rot machen)
      - Werkzeuge/Linien verbinden (C)
      - "Datei/Speichern unter" : poly aufwählen und abspeichern

      das wars 🙂

      geht für einmalige Aktionen sehr flott. Oder wenn man mal ein "frei Schnauze"-Polygon braucht: Linie zeichnen, als lokales Poly abspeichern, fertig.

      Gruss
      walter

      p.s. natürlich nicht auf den Server jagen.


    • Re: Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl · rayquaza (Gast) · 28.05.2013 11:58 · [flux]

      Lies nochmal (zugegeben, es ist etwas versteckt geschrieben):

      rayquaza wrote:

      eine andere per Script nutzbare Möglichkeit

      Wie du es beschrieben hast bin ich an meine vorrübergehenden Bereiche gekommen, zum automatisierten Erstellen eignet sich JOSM leider nicht.


    • Re: Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl · wambacher (Gast) · 28.05.2013 12:41 · [flux]

      rayquaza wrote:

      Wie du es beschrieben hast bin ich an meine vorrübergehenden Bereiche gekommen, zum automatisierten Erstellen eignet sich JOSM leider nicht.

      ok, gut versteckt - Pech gehabt.
      Dann wirst du richtig Arbeit reinstecken müssen.
      Ich mach sowas mit Postgresql und Postgis; allerdings basiert meine DB auf dem Osmosis-Snapshot-Schema und ist nicht mit osm2pgsql kompatibel.

      Nur so ein Denkansatz:
      Wenn du eine osm2pgsql-DB hättest: da sind u.A. die Grenzpolygone bereits als geschlossene Ways drin (die haben wohl die negative ID der entsprechenden Relation). Die bräuchstes du dann "nur noch" in Polys umwandeln. Und dafür gibt es Tools.

      Gruss
      walter


    • Re: Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl · couchmapper (Gast) · 28.05.2013 14:24 · [flux]

      Installier doch mal perl-libwww auf deinem Arch Linux.


    • Re: Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl · rayquaza (Gast) · 29.05.2013 00:33 · [flux]

      couchmapper wrote:

      Installier doch mal perl-libwww auf deinem Arch Linux.

      Sehr gut, Danke. Weitere fehlende Pakete waren dann einfacher zu erkennen, nach Installetion der folgenden Pakete erhalte ich auch hier eine Fehlermeldung ähnlich der unter Windows:

      • perl-libwww,
      • perl-xml-libxml (wäre vermutlich nicht notwendig),
      • perl-xml-simple,
      • perl-list-moreutils,
      • perl-yaml.

      Die Fehlermeldung unter Linux:

      ./getbound.pl -file europe-latest.osm.pbf -o poly/LU_0.poly 28711 wrote:

      Unable to load aliases from aliases.yml: YAML Error: Couldn't open aliases.yml for input:\nDatei oder Verzeichnis nicht gefunden
      Code: YAML_LOAD_ERR_FILE_INPUT
      at /usr/share/perl5/vendor_perl/YAML.pm line 71.
      Entity: line 1: parser error : Document is empty

      ^
      Entity: line 1: parser error : Start tag expected, '<' not found

      ^

      Die genannte Datei enthält anfangs Perl-Code und nach den Zeilen "1;" und "__END__" Quellcode einer Manpage, wenn ich das richtig erkenne; Dateigrösse 24868 Byte.

      Nachtrag: Nach der Installation von perl-yaml-syck lautet die Meldung:

      ./getbound.pl -file europe-latest.osm.pbf -o poly/LU_0.poly 28711 wrote:

      Unable to load aliases from aliases.yml: 'aliases.yml' is empty or non-existent at /usr/lib/perl5/vendor_perl/YAML/Syck.pm line 129.
      Entity: line 1: parser error : Document is empty

      ^
      Entity: line 1: parser error : Start tag expected, '<' not found

      ^

      Die Datei /usr/lib/perl5/vendor_perl/YAML/aliases.yml existiert nicht. So langsam werden die Fehlermeldungen ähnlicher. Wie er sich wohl diesmal zufrieden stellen lässt?


    • Re: Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl · rayquaza (Gast) · 29.05.2013 10:45 · [flux]

      Ich fasse mal meine bisherigen Recherche-Ergebnisse zusammen, vielleicht bringt's einen von euch auf eine Idee:

      Meine fast nicht vorhandenen Perl-Kenntnisse meinen, dass die Datei gar nicht genutzt werden würde (was ich nicht so ganz glaube) und ich mit dem Parameter "-aliases" eine andere Datei auswählen könnte ("" als Dateiname klappt nicht, dass wäre ja auch leer).

      Wikipedia verriet mir, dass "YML" "Why a Markup Language" heisst und es dazu noch keinen Artikel gibt. Die einzigen beiden zutreffenden Ergebnisse beim Googeln nach dem Dateinamen sind von bukkit.org (einer Mincraft-Server-Software) und ein Posting aus dem russischen Bereich dieses Forums, wobei mir letzteres mangels Sprachkenntnis nicht viel bringt und die Google-Übersetzung andeutet, dass es unzutreffend sei.

      Nun vermute ich, dass in dieser Datei Ersatzbezeichnungen ("Aliase") für Relationen bestimmt werden können. Ich habe aber weder die korrekte Syntax dafür herausgefunden noch ob man das auch einfach nicht nutzen kann (ich weiss ja die Relationsnummern bzw. finde sie zuvor heraus).


    • Re: Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl · Oli-Wan (Gast) · 29.05.2013 10:54 · [flux]

      rayquaza wrote:

      Wikipedia verriet mir, dass "YML" "Why a Markup Language" heisst

      rayquaza wrote:

      Die Datei /usr/lib/perl5/vendor_perl/YAML/aliases.yml existiert nicht.

      legt nahe, daß Du eher auf der Suche nach YAML als nach YML bist.


    • Re: Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl · jman1983 (Gast) · 29.05.2013 10:58 · [flux]

      Also zu deinem Pearl-Problem kann ich dir nicht wirklich weiterhelfen.
      Allerdings evtl. zur "automatischen" Erzeugung von Poly-Files:

      Wenn du folgende URL aufrufst:
      http://osm102.openstreetmap.fr/~jocelyn … >&params=0
      Und <OSM-RELATION-ID> durch die gewünschte ID ersetzt bekommst du das Polyfile zurückgeliefert.
      In Verbindung mit einen Skript und wget lässt sich das doch schon recht gut "automatisieren"

      Hoffe, ich konnte dir weiterhelfen.

      MfG
      Jan


    • Re: Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl · rayquaza (Gast) · 29.05.2013 11:32 · [flux]

      jman1983 wrote:

      Wenn du folgende URL aufrufst:
      http://osm102.openstreetmap.fr/~jocelyn … >&params=0
      Und <OSM-RELATION-ID> durch die gewünschte ID ersetzt bekommst du das Polyfile zurückgeliefert.
      In Verbindung mit einen Skript und wget lässt sich das doch schon recht gut "automatisieren"

      Ja, das klingt so, wie ich mir das vorstelle. Mir wäre eine Variante, die unabhänig von einem externen Webserver funktioniert lieber, weshalb ich das mit dem Perl-Script noch hinkriegen möchte, aber damit kann ich zumindest schonmal weitermachen, danke!

      Oli-Wan wrote:

      rayquaza wrote:

      Wikipedia verriet mir, dass "YML" "Why a Markup Language" heisst

      rayquaza wrote:

      Die Datei /usr/lib/perl5/vendor_perl/YAML/aliases.yml existiert nicht.

      legt nahe, daß Du eher auf der Suche nach YAML als nach YML bist.

      Gute Idee, werde ich gleich mal ausprobieren. Jedoch war diese Zeile nicht Teil einer Fehlermeldung, sondern nur ein Zusatz, wo ich nach der Datei gesucht hatte (um z.B. inkorrekte Berechtigungen auszuschliessen). Ausserdem heisst es in der Fehlermeldung "Start tag expected, '<' not found", was ich in den Beispielen bei Wikipedia nicht finde.

      Nachtrag: Ich habe es inzwischen mit "---\nLU: 28711" ("\n" == Zeilenumbruch) sowie mit nur letzterer Zeile als Dateiinhalt ausprobiert (mit "28711" und mit "LU" als Relationsbezeichner). Alle vier Versuche gaben folgende Fehlermeldung aus, also den letzten Abschnitt der bisherigen Meldung:

      ./getbound.pl -file europe-latest.osm.pbf -o poly/LU_0.poly 28711 wrote:

      Entity: line 1: parser error : Document is empty

      ^
      Entity: line 1: parser error : Start tag expected, '<' not found

      ^

      Wie kann ich herausfinden, welches Dokument damit gemeint ist? In der Fehlermeldung wird ja keines erwähnt und im Perlscript sehe ich keinen weiteren Dateizugriff (ausser auf das OSM-File, das auch vorhanden ist). Kann es sein, dass das Script mit den PBF-Dateien nichts anfangen kann?


    • Re: Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl · Oli-Wan (Gast) · 29.05.2013 11:43 · [flux]

      rayquaza wrote:

      Kann es sein, dass das Script mit den PBF-Dateien nichts anfangen kann?

      Das ist ganz offensichtlich der Fall.


    • Re: Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl · couchmapper (Gast) · 29.05.2013 11:45 · [flux]

      getbound.pl ist 2 Jahre alt, das kann bestimt kein .pbf. Probiere mal .osm (also die entpackte XML-Version, kein .osm.bz2 oder sowas).

      Sieht man auch hier:

      https://github.com/sev-/osm/blob/master/getbound.pl#L69
      https://github.com/sev-/osm/blob/master/getbound.pl#L99


    • Re: Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl · rayquaza (Gast) · 29.05.2013 11:49 · [flux]

      Dann werde ich wohl den von jman1983 vorgeschlagenen Webservice nutzen. Trotzdem Danke für eure Bemühungen. *als erledigt markier*


    • Re: Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl · couchmapper (Gast) · 29.05.2013 11:51 · [flux]

      Warum so schnell aufgeben? Du kannst mir osmconvert/osmfilter die Relation herausfiltern oder direkt die Id der Relation angeben und die online vom Server runterladen:

      ␣␣␣print␣"Usage:␣getbound.pl␣[options]␣<relation_id>\n\n";
      print␣"Available␣options:\n";
      print␣"␣-o␣<file>␣-␣output␣filename␣(default:␣STDOUT)\n";
      print␣"␣-proxy␣<host>␣-␣use␣proxy\n";
      print␣"␣-onering␣-␣merge␣rings\n\n";
      

      Piece of cake... 🙂


    • Re: Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl · rayquaza (Gast) · 29.05.2013 12:01 · [flux]

      Weil Relation herunterladen und dann konevertieren mehr Aufwand ist als Relation.poly herunterladen und das vorherige rausfiltern noch ein Systemaufruf mehr wäre und noch eine weitere Temporäre Datei pro Relation bräuchte (Ja, ich weiss, stdout>stdin). Trotzdem danke für deinen Vorschlag, wenn ich später irgendwann mal Lust habe werde ich das vsl. so umsezten (und sicherstellen, dass es niemals ausser mir jemand nutzen und schon gar nicht verstehen kann *teuflisch guck*).

      Nach BK: Ja, der arme API-Server ;-) (Ja, ich weiss, könnte man theoretisch ändern)


    • Re: Erstellen von .poly-Dateien / seltsame Fehlermeldung von getbound.pl · Oli-Wan (Gast) · 29.05.2013 12:02 · [flux]

      couchmapper wrote:

      Warum so schnell aufgeben? Du kannst mir osmconvert/osmfilter die Relation herausfiltern oder direkt die Id der Relation angeben und die online vom Server runterladen:

      Gerade ausprobiert, funktioniert tadellos trotz "Unable to load aliases from aliases.yml". Laden vom Server ist natürlich nicht der geeignete Weg, um eine größere Zahl von Polygonen zu erstellen (vgl. Server-Spendenkampagne). Statt die Relation direkt auszufiltern könnte man alternativ auch noch osmconvert OSM-XML in die Standardeingabe von Perl schreiben lassen.

      rayquaza wrote:

      Weil Relation herunterladen und dann konevertieren mehr Aufwand ist als Relation.poly ...

      Gib getbound.pl doch einfach als Kommandozeilenoption die Nummer der Relation (vgl. oben zitierte "Usage"-Ausgabe), dann erledigt es den Download selbst und macht ein .poly draus.