coordinate systems transformations
Gregor Mosheh
stigmata_blackangel at YAHOO.COM
Sat Mar 26 11:40:43 PST 2005
--- Mauricio Leon <mleon at SCIENTIFICINFORMATICS.COM>
> I still have the problem of transforming coordinates
> in degrees into map extents. Specifically, I need
> to create maps around points given in
> latitude-longitude coordinates
Ah, I see. All the maps we deal with use UTM as the
output projection - we found that doing any kind of
math on degrees is a real pain, since the linear size
of a degree is not constant. My advice would be to
project the data out of DD into a planar coordinate
system, by setting a different output projection in
your mapfile.
If you're talking about a search program you wrote
that looks up a point whose coords are latlong, and
you want to convert those points into a planar system,
it depends on the language you're using to fetch the
points. If you're using PHP/MapScript, it goes
something like this:
- the SQL query to fetch the data included
"AsText(the_geom) AS the_geom" so that the geometry
info would be in an easy-to-parse format.
// fetch the projection string
$projection = 'init=epsg:26710';
// the_geom is in that fetched record, and
// fetching it depends on your DB code,
// e.g. ADOdb
$the_geom = $records->fields['the_geom'];
// figure out $x and $y, the coords of the point
$coords = array();
preg_match('/POINT\((\-?\d+\.?\d*)
(\-?\d+\.?\d*)\)/',$the_geom,$coords);
$x = $coords[1];
$y = $coords[2];
// reproject the point into the map's target
projection
$projInObj =
ms_newprojectionobj("proj=latlong");
$projOutObj =
ms_newprojectionobj(preg_replace('/\s+/',',',$projection));
$poPoint = ms_newpointobj();
$poPoint->setXY($x, $y);
$poPoint->project($projInObj, $projOutObj);
$x = $poPoint->x;
$y = $poPoint->y;
// the extent to zoom to: that point
// with a very tiny buffer
$extent =
sprintf("%s+%s+%s+%s",$x-0.1,$y-0.1,$x+0.1,$y+0.1);
This method, as you can see on that last line, makes
for a 0.1-meter buffer around the point.
Realistically, your map's minscale will keep the zoom
from being that extreme. Or you can specify a larger
padding distance.
__________________________________
Do you Yahoo!?
Yahoo! Mail - Helps protect you from nasty viruses.
http://promotions.yahoo.com/new_mail
More information about the MapServer-users
mailing list