[OpenLayers-Users] How to change geometry's projection back andforth

Christopher Schmidt crschmidt at metacarta.com
Mon Dec 8 15:00:36 EST 2008


On Mon, Dec 08, 2008 at 09:50:54PM +0200, Lehtonen, Mika wrote:
> Thanks Arnd,
> 
> you nailed it. Removing
>         if (point.transformed) {
>         this.log("point already transformed");
>         return;
>         }

This code is not in the proj4js trunk code.

http://svn.osgeo.org/metacrs/proj4js/trunk/

> made it possible to reproject the geometry back. Just wondering whether 
> there had been any changes in newer proj4js..  Mine is dated 2007. Have 
> to check that.
> 
> So this was not an Openlayers issue after all.
> 
> - mika -
> 
> Arnd Wippermann kirjoitti:
> > Hi,
> >
> > Perhaps this is the issue:
> > http://www.mail-archive.com/users@openlayers.org/msg04875.html
> >  
> > Arnd Wippermann
> >
> > -----Ursprüngliche Nachricht-----
> > Von: users-bounces at openlayers.org [mailto:users-bounces at openlayers.org] Im
> > Auftrag von Lehtonen, Mika
> > Gesendet: Montag, 8. Dezember 2008 15:57
> > An: OpenLayers
> > Betreff: [OpenLayers-Users] How to change geometry's projection back
> > andforth
> >
> > Hi,
> > I am trying to limit the size of a drawn geometry (regular polygon). So
> > after the feature is created, I jump to my limiting function which suppose
> > to redraw the geometry taking into account the set limit. My map is in
> > EPSG:900913 (spherical mercator) because of the Google base maps, but all my
> > geometries are natively in EPSG:2393. So in order to accomplish some
> > comparison I have to reproject the drawn polygon into 2393, do the
> > comparison and then reproject it back to 900913. The drawn geometry
> > reprojects nicely to 2393 (with proj4js) but I can't get the new geometry
> > reprojected back. What's wrong with this? Here is the
> > essential:
> >                     geometria = event.feature;
> >                     kkj = geometria.geometry;
> >                     kkj.transform(new
> > OpenLayers.Projection("EPSG:900913"), new
> > OpenLayers.Projection("EPSG:2393"));
> >                     radius =
> > OpenLayers.Number.limitSigDigs((kkj.getBounds().getHeight()/1000),2);
> >                     if (radius > 50) {
> >                     var scale = 50 / radius;
> >                     var x = kkj.getBounds().getCenterLonLat().lon;
> >                     var y = kkj.getBounds().getCenterLonLat().lat;
> >                     var origin = new OpenLayers.Geometry.Point(x,y);
> >                         kkj.resize(scale,origin,1); alert(kkj);
> >                     kkj.transform(new
> > OpenLayers.Projection("EPSG:2393"), new
> > OpenLayers.Projection("EPSG:900913"));
> > alert(kkj);   /* this is exactly the same than it was before */
> >                     geometria.geometry = kkj;
> >                     vlayer.drawFeature(geometria);
> >                     // vlayer.redraw(true);
> >                     OpenLayers.Util.getElement('metapalkki').innerHTML = "
> > Hakuympyrän säde voi olla max. 50 km!";
> >                     } else {
> >                     OpenLayers.Util.getElement('metapalkki').innerHTML = "
> > Hakuympyrän säde on " + radius + "km";
> >                     }
> >
> > If I do this without reprojection, the geometry limitation works, although
> > the scale is a little bit wrong and my other comparisons don't work because
> > they should be using 2393.
> >
> > - mika -
> > _______________________________________________
> > Users mailing list
> > Users at openlayers.org
> > http://openlayers.org/mailman/listinfo/users
> >
> >   
> _______________________________________________
> Users mailing list
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users

-- 
Christopher Schmidt
MetaCarta



More information about the Users mailing list