[mapserver-users] RE: is there such a thing as a pixel/screen projection?
Brent Fraser
bfraser at geoanalytic.com
Fri Jan 23 10:03:33 PST 2009
Arthur,
If I understand you, you want to submit output image pixel coords to a function/method and get out coordinates in the MAP file's coordinate system. In general, this is a similarity transformation involving one scale, two translation values, and possibly a rotation value (if there is an ANGLE keyword in the MAP file, or applied via MapScript).
Most likely your session's output would use a projected coordinate system (not geographic), so if you really wanted Lat/Lon values, you would then have to use a Proj4 function (exposed via Mapscript?) to do the inverse projection.
The pixel/georef similarity values are stored in the map object (actually the six affine transformation parameters are stored, a super-set of the similarity). And strangely, even though the simliarity calculation is done several places in Mapserver, there is a specific function to do this in mapobject.c named msMapPixelToGeoref with a message saying "msMapPixelToGeoref() not yet implemented".
I'm not a Mapscript guy, so I don't know if you can get at the map object's geotransform values (likely not?). May someone else could comment on that? And they are really just a mathematically convenient way of storing the mapObj.cellsize, ANGLE (how come there's a setRotation method but no getRotation?), and extent.minx, extent.miny values.
Brent Fraser
Arthur Clifford wrote:
> Greetings,
>
>
>
> I was wondering whether there is a way to provide a proj4 string or
> other method for specifying a projection where the units are in pixels
> and screen width and height are provided? My desire is to use the
> PointObj’s project function for forward and reverse projecting an x,y
> screen coordinate. I find it odd that MapScript has great functions for
> zooming and panning based on pixel values and the whole shpxy
> functionality in the templating engine but lacks a way to convert a
> pixel to lat/lon or other projection values. It would be one thing if
> nothing in MapScript worked that way, but clearly something in the
> code-base knows how to do the conversion. I find this especially odd
> when the queryByPoint function requires a point object that explicitly
> states it should be in projected not screen values. My google searches
> thus far have pointed to useful formulae for doing the trick, but what’s
> up with that?!
>
>
>
> I feel like I’m missing a less-than-obvious logic-leap that one is
> supposed to just know to make by understanding the object model. I have
> RTFM and I nothing I see suggests it is possible through php mapscript
> objects to convert screen units to a target projection. If there are
> tutorials or examples of how to do this I haven’t yet discovered any.
>
>
>
> So, how does one, through php MapScript, get a lat/lon value for
> projecting into projection values if a PointObj cannot be defined with
> pixel values and the project functions take PointObj? Also, how would
> one go about requesting a special screen-projection as a projection to
> specify if something like that does not exist?
>
>
>
> ArtC
>
> Arthur Clifford
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> mapserver-users mailing list
> mapserver-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-users
More information about the MapServer-users
mailing list