Re: [Talk-de] Wie Mercator nach EPSG:4326 wandeln in Perl?
Manuel Reimer wrote: Da der Fehler bei größeren Zoomstufen zu groß wird, habe ich den Layer so konfiguriert, dass man mindestens bis Zoom 12 reingezoomt haben muss. Ich hoffe einfach, dass es genau genug ist, dass ich letztlich auch "getFeatureInfo" nutzen kann. Wäre nämlich doof, wenn man auf der Karte "daneben klicken" muss um die gewünschte Info zu bekommen. Mal ein Nachtrag dazu: Ich habe "getFeatureInfo" jetzt mit eingebaut (läuft auch durch meinen Proxy und wird somit genau so umgerechnet) und ich bin mit dem Ergebnis sehr zufrieden. Man kann dahin klicken, wo das Element, zu dem man Infos will, sich befindet und der WMS gibt korrekte Infos zurück. Da es mit der einfachen Lösung so gut funktioniert, werde ich mir jegliche Versuche in Richtung "Reprojektion" erstmal schenken. Gruß Manuel ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
Re: [Talk-de] Wie Mercator nach EPSG:4326 wandeln in Perl?
Hallo, da auch JOSM diesen "Fehler" macht hatte ich mir mal Kacheln gebastelt, bei denen auf der einen Seite die richtigen Koordinaten, und auf der anderen Seite die verzerrten Koordinaten als horizontale Linien gezeichnet waren. Ergebnis: Bei üblichen Kachelgrößen muss man schon extrem weit rauszoomen (ca. Bundesland auf einer Kachel), bis es eine Rolle spielt. Zum mappen also eher unproblematisch, da man bei diesem Zoom eh keine Details mehr erkennen kann. Wenn Bundesländer oder Staaten angeklickt werden sollen siehe dies schon anders aus. Holger Am 03.01.2012 17:50, schrieb Frederik Ramm: Du weisst aber schon, dass Du mit groesser werdendem Abstand vom Aequator damit immer verzerrtere Bilder bekommst - die Oberkante und Unterkante des Bildes sind da, wo sie hingehoeren, aber die Bildmitte kann ein ganzes Stueck hoeher oder tiefer liegen (also das, was bei Dir genau in der Mitte zwischen Ober- und Unterkante liegt, muesste eigentlich 10% weiter oben oder unten abgebildet sein). ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
Re: [Talk-de] Wie Mercator nach EPSG:4326 wandeln in Perl?
Frederik Ramm wrote: Du weisst aber schon, dass Du mit groesser werdendem Abstand vom Aequator damit immer verzerrtere Bilder bekommst - die Oberkante und Unterkante des Bildes sind da, wo sie hingehoeren, aber die Bildmitte kann ein ganzes Stueck hoeher oder tiefer liegen (also das, was bei Dir genau in der Mitte zwischen Ober- und Unterkante liegt, muesste eigentlich 10% weiter oben oder unten abgebildet sein). Wenn Du weit reingezoomt bist, ist der Fehler natuerlich absolut betrachtet nicht so gross. Aber es ist halt keine lineare Transformation, und deswegen reicht ein Umprojizieren der Bounding Box nicht aus. Es geht mir bei meiner Karte nur um Deutschland. Zudem holt Openlayers den WMS auch als "Tiles" ab, was den Fehler etwas reduziert, weil die Flächen kleiner werden. Da der Fehler bei größeren Zoomstufen zu groß wird, habe ich den Layer so konfiguriert, dass man mindestens bis Zoom 12 reingezoomt haben muss. Ich hoffe einfach, dass es genau genug ist, dass ich letztlich auch "getFeatureInfo" nutzen kann. Wäre nämlich doof, wenn man auf der Karte "daneben klicken" muss um die gewünschte Info zu bekommen. Kennt denn jemand eine Reprojektions-Lösung, die einfach als CGI auf einem Server laufen kann? Muss aber statisch baubar sein. Problem ist dabei, dass der WMS nur PNG-Bilder liefert. Es müsste also echte Bild-Manipulation gemacht werden. Gruß Manuel ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
Re: [Talk-de] Wie Mercator nach EPSG:4326 wandeln in Perl?
Hallo, On 01/03/2012 04:38 PM, Manuel Reimer wrote: Habe das in meinen WMS-Proxy eingebaut. Der gewünschte WMS-Server kennt kein EPSG:900913, also wandle ich die BBOX, die von Openlayers kommt, direkt im Proxy nach EPSG:4326 und frage dann damit am WMS an. Das Ergebnis ist garnicht mal so schlecht. Du weisst aber schon, dass Du mit groesser werdendem Abstand vom Aequator damit immer verzerrtere Bilder bekommst - die Oberkante und Unterkante des Bildes sind da, wo sie hingehoeren, aber die Bildmitte kann ein ganzes Stueck hoeher oder tiefer liegen (also das, was bei Dir genau in der Mitte zwischen Ober- und Unterkante liegt, muesste eigentlich 10% weiter oben oder unten abgebildet sein). Wenn Du weit reingezoomt bist, ist der Fehler natuerlich absolut betrachtet nicht so gross. Aber es ist halt keine lineare Transformation, und deswegen reicht ein Umprojizieren der Bounding Box nicht aus. Bye Frederik ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
Re: [Talk-de] Wie Mercator nach EPSG:4326 wandeln in Perl?
Der gewünschte WMS-Server kennt kein EPSG:900913 Vielleicht kann er ja EPSG:3857? 900913 ist gar kein echter EPSG-Code sondern steht für "google" und wurde damals von OpenLayers als Platzhalter eingeführt. Mittlerweile gibt es einen offiziellen Code, EPSG:3857 eben. Gruß, - Bartosz ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
Re: [Talk-de] Wie Mercator nach EPSG:4326 wandeln in Perl?
Holger wrote: ich kann das hier bieten: [...] Klappt ganz wunderbar und ist nebenbei auch die kürzeste Formel, die ich bisher gesehen habe. Vielen Dank dafür! Habe das in meinen WMS-Proxy eingebaut. Der gewünschte WMS-Server kennt kein EPSG:900913, also wandle ich die BBOX, die von Openlayers kommt, direkt im Proxy nach EPSG:4326 und frage dann damit am WMS an. Das Ergebnis ist garnicht mal so schlecht. Gruß Manuel ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
Re: [Talk-de] Wie Mercator nach EPSG:4326 wandeln in Perl?
Hallo Manuel, ich kann das hier bieten: use Math::Trig; ### Earth radius in meters. This must be 6378137 for the calculation ### of Spherical Mercator coordinates. my $earthRadius = 6378137.0; ### Convert Spherical Mercator coordinates into latitude and longitude. sub merc2latlon { my ($xMerc, $yMerc) = @_; my ($lat, $lon); $lon = rad2deg($xMerc / $earthRadius); $lat = rad2deg(atan(sinh($yMerc / $earthRadius))); return($lat, $lon); } Gruß Holger Am 01.01.2012 18:07, schrieb Manuel Reimer: Hallo, für den Längengrad habe ich die Formel schon selber umgestellt: lon = (merclon * 180) / 20037508.34 Aber ich bekomme es für den Breitengrad nicht hin... Ursprungsformel, die genau das Gegenteil macht, was ich will (Aber noch Javascript): function Lat2Merc(lat) { var PI = 3.14159265358979323846; lat = Math.log(Math.tan( (90 + lat) * PI / 360)) / (PI / 180); return 20037508.34 * lat / 180; } Ich brauche die Umgekehrfunktion. Allerdings nicht in Javascript sondern in Perl. Hat da jemand etwas auf die Schnelle bereit? Gruß Manuel P.S. Ich kann auf dem Server *keine* Perl-Module installieren! ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
[Talk-de] Wie Mercator nach EPSG:4326 wandeln in Perl?
Hallo, für den Längengrad habe ich die Formel schon selber umgestellt: lon = (merclon * 180) / 20037508.34 Aber ich bekomme es für den Breitengrad nicht hin... Ursprungsformel, die genau das Gegenteil macht, was ich will (Aber noch Javascript): function Lat2Merc(lat) { var PI = 3.14159265358979323846; lat = Math.log(Math.tan( (90 + lat) * PI / 360)) / (PI / 180); return 20037508.34 * lat / 180; } Ich brauche die Umgekehrfunktion. Allerdings nicht in Javascript sondern in Perl. Hat da jemand etwas auf die Schnelle bereit? Gruß Manuel P.S. Ich kann auf dem Server *keine* Perl-Module installieren! ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de