You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***

#1 2013-05-28 10:29:50

rayquaza
Member
From: DE-BW
Registered: 2012-11-18
Posts: 2,007

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

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?

Offline

#2 2013-05-28 11:49:17

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,769
Website

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

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 smile

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.

Last edited by wambacher (2013-05-28 11:49:58)

Offline

#3 2013-05-28 11:58:58

rayquaza
Member
From: DE-BW
Registered: 2012-11-18
Posts: 2,007

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

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.

Offline

#4 2013-05-28 12:41:56

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,769
Website

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

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

Offline

#5 2013-05-28 14:24:59

couchmapper
Member
Registered: 2013-02-17
Posts: 462

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

Installier doch mal perl-libwww auf deinem Arch Linux.

Offline

#6 2013-05-29 00:33:20

rayquaza
Member
From: DE-BW
Registered: 2012-11-18
Posts: 2,007

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

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?

Offline

#7 2013-05-29 10:45:55

rayquaza
Member
From: DE-BW
Registered: 2012-11-18
Posts: 2,007

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

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).

Offline

#8 2013-05-29 10:54:13

Oli-Wan
Member
From: NRW
Registered: 2010-09-14
Posts: 2,814

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

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.


No animals were harmed in the writing of this posting.

Offline

#9 2013-05-29 10:58:02

jman1983
Member
Registered: 2008-12-29
Posts: 131

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

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

Offline

#10 2013-05-29 11:32:49

rayquaza
Member
From: DE-BW
Registered: 2012-11-18
Posts: 2,007

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

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?

Offline

#11 2013-05-29 11:43:15

Oli-Wan
Member
From: NRW
Registered: 2010-09-14
Posts: 2,814

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

rayquaza wrote:

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

Das ist ganz offensichtlich der Fall.


No animals were harmed in the writing of this posting.

Offline

#12 2013-05-29 11:45:46

couchmapper
Member
Registered: 2013-02-17
Posts: 462

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

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

Last edited by couchmapper (2013-05-29 11:48:53)

Offline

#13 2013-05-29 11:49:38

rayquaza
Member
From: DE-BW
Registered: 2012-11-18
Posts: 2,007

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

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

Offline

#14 2013-05-29 11:51:43

couchmapper
Member
Registered: 2013-02-17
Posts: 462

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

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... smile

Last edited by couchmapper (2013-05-29 11:56:06)

Offline

#15 2013-05-29 12:01:40

rayquaza
Member
From: DE-BW
Registered: 2012-11-18
Posts: 2,007

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

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)

Offline

#16 2013-05-29 12:02:06

Oli-Wan
Member
From: NRW
Registered: 2010-09-14
Posts: 2,814

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

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.

Last edited by Oli-Wan (2013-05-29 12:04:44)


No animals were harmed in the writing of this posting.

Offline

Board footer

Powered by FluxBB