[Mapserver-users] MapScript: map-Y coordinate is always wrong while map-X is right

Bjoern Platzen bplatzen at sosnetz.de
Tue Jul 8 15:31:26 EDT 2003


Hi Sean, Adam and Lowell,

thanks for your Support, but I think, I took a way into a 
one-way-street... 

I think I'll start again with the whole MapXY & Extend-Thing. Whatever I 
did, and with all your tipps, I couldn't get it going. At least I tried 
the following:

def _click2map2(self,clickX, clickY, Extend):
    '''Uebersetze Klick-Koordinaten in Kartenkoordinaten'''
    Extend = Extend.split(" ")
        
    cx = (clickX/self.mymap.width)
    cy = 1-(clickY/self.mymap.height)
        
    xMap = float(Extend[0])+((float(Extend[2])-float(Extend[0]))*cx)
    yMap = float(Extend[1])+((float(Extend[3])-float(Extend[1]))*cy)
        
        
    return (xMap,yMap)

This was a step in the right direction, but not yet right...
(now I've got Y = 5668350 where it should be 5669095 (Gauss-Krueger)

Maybe It's the wrong Extend, I'm calculating with. I think, I should 
calculate with the imgext and not the mapext, right?
So when the first calculation of imgext is wrong, every clickpoint has 
to be wrong as well.

I'm going to figure it out tomorrow...

Thanks for your help,

Bye Bjoern.


Am Dienstag, 8. Juli 2003 16:49 schrieb Sean Gillies:
> Hi Bjoern,
>
> I found the problem in your code.  See below.
>
> On Tuesday, July 8, 2003, at 07:57  AM, Bjoern Platzen wrote:
> > Hello List,
> >
> > maybe I'm just to blind, but I can't figure out, what is going
> > wrong.
> >
> > I wrote a small Program using PythonMapscript.
> >
> > I'm calculating the following to get the Map-Coordinates from the
> > Click-Coordinates (where clickX and clickY come as img.x and img.y
> > from a HTML-form, Extend is the [mapext]):
> >
> > def _click2map(self,clickX, clickY, Extend):
> >     '''Uebersetze Klick-Koordinaten in Kartenkoordinaten'''
> >     Extend = Extend.split(" ")
> >
> >     cx = (float(Extend[2])-float(Extend[0]))/(self.mymap.width-1)
> >     cy = (float(Extend[3])-float(Extend[1]))/(self.mymap.height-1)
> >
> >     xMap = float(currentExtend[0])+cx*clickX
> >     yMap = float(currentExtend[1])+cy*clickY
>
> should be:
>
>        yMap = float(currentExtent[1])-cy*clickY
>
> Remember that the origin of your image is the upper left corner
> and so your new map point will always have a smaller y value.  Also,
> it looks like you are calculating cx and cy incorrectly.
>
> Here is an example of how this calculation is done in ZMapServer
> (http://zmapserver.sourceforge.net):
>
>
>          extent = (mapobj.extent.minx,
>                    mapobj.extent.miny,
>                    mapobj.extent.maxx,
>                    mapobj.extent.maxy )
>          width = mapobj.width
>          height = mapobj.height
>          pxsize = (extent[2]-extent[0])/width
>          pysize = (extent[3]-extent[1])/height
>          point = {}
>          point['x'] = extent[0] + pixel*pxsize
>          point['y'] = extent[3] - line*pysize
>
> cheers,
> Sean

-- 
small office solutions
info at sosnetz.de  -  http://www.sosnetz.de




More information about the mapserver-users mailing list