Hallo,
ich habe eine Frage eher genereller Art, auf dich ich bis jetzt keine Antwort fand. Evtl. besteht ja hier eine Chance, dass mir jemand weiterhelfen kann.
Ich soll (natürlich möglichst in Perl) schöne Karten rendern. Und habe hierzu auch einen interessanten Ansatz gefunden. Der geht so:
1)
Unter
naturalearthdata.com gibt es tolles Kartenmaterial, bereitgestellt in verschiedenen Dateien, je nachdem was man darstellen möchte. Die Karten sind nicht sehr detailliert - genau richtig für Übersichtskarten. Die Daten sind als
ESRI Shapefile als
Download verfügbar.
2)
Es gibt ein Perl-Skript welches solche Shapefiles zu SVG's konvertieren kann:
shptosvg
Das funktioniert wunderbar. Ich konnte damit auch sehr große Dateien in SVG umwandeln.
Das Problem
***********
Wenn man eine Karte erstellen möchte, würde man ja gerne das Gebiet eingrenzen. D.h. statt die ganze Welt als Bild zu haben, möchte man eben nur einen Ausschnitt, z.B. Europa oder Deutschland. Die Daten liegen aber u.U. in einem File das die ganze Welt abdeckt. Nun gibt es zwei Möglichkeiten. Entweder man filtert die benötigten Daten aus dem Shapefile raus, oder man schneidet das SVG entsprechend zu. Bei beiden Ansätzen stehe ich an.
Auf CPAN scheint mir das Modul
Geo::ShapeFile das erfolgversprechendste zu sein, allerdings habe ich beim Doku-lesen eher das Gefühl, dass ich damit nur lesen, aber nicht schreiben kann. Ich kann also Koordinatenpunkte rausfinden... aber nix gescheites damit machen... ideal wäre ja wenn ich daraus erst mal wieder ein Shapefile machen kann - welches ich dann zur Transformation weiterleite.
Auch beim Zuschneiden von SVG's habe ich keine wirklichen Möglichkeiten gefunden... das kann aber auch daran liegen, dass mir nicht die richtigen Suchwörter auf Englisch einfallen. Mann muss doch SVG's zuschneiden können? Das mag zwar nicht trivial sein (z.B. angeschnittener Kreis), aber das müsste doch ein oft verwendeter use-case sein? Generell ist das aber eh nur eine Notlösung, da es ja nicht grade effizient ist zuerst alles nach SVG umzuwandeln, nur um dann z.B. 95% davon wegzuwerfen.
Wie so oft fällt mir beim Frage-schreiben noch eine andere Lösung ein... man könnte in den Code von shptosvg reinschauen und dort bei den Koordinaten evtl. Punkte rausfriemeln... genau bevor sie in SVG umgewandelt werden...
Auf jeden Fall sehe ich den Wald vor lauter Bäume nicht mehr. Auch bei Openstreetmap gibt es sehr viele Perlscripts. Leider scheinen alle nicht mehr gewartet zu sein. Dies gilt für die Perl-Umsetzung von
Osmarender genau so wie für
mapgen.pl und
mapweaver.pl. Generell habe ich mit Openstreetmap das Problem, dass das ganze eher zu mächtig ist für meine Anforderungen. Man muss gleich eine ganze Infrastruktur aufbauen und mit großen Datenmengen jonglieren. Da wäre mir die andere Variante lieber. Ist pure Perl und könnte das leisten was gefordert ist. Es könnte auch ein nettes CPAN-Modul draus werden! Allerdings muss ich es hinkriegen, dass man die Dinger zuschneiden kann... und drum dieser Post hier. Hat jemand einen Rat hierzu?
Danke