[Mapserver-users] Re: Center in lat/lon, radius in miles?
Brian Fujito
brian at christianity.com
Fri Aug 29 14:51:46 PDT 2003
Hi there, I saw your post from back in 2001:
http://mapserver.gis.umn.edu/data2/wilma/mapserver-users/0109/msg00064.html
I'm hoping that I can get some followup help on this.
I'm trying to do the same thing, where my map is in lcc, but I would
like to tell it, "center the map at longitude,latitude = x,y, and show
an X-mile radius around it". I'd like for the image dimensions to
remain the same, and for the resulting image to remain in lcc as much as
possible.
Here is my mapfile:
########### begin mapfile
NAME VA
# The following is the lcc extent (conic-projected)
#EXTENT -399619.932233 1844229.926521 396405.724268 2442378.083651
# The following is the latlong extent
EXTENT -84.109175 35.285090 -74.820374 40.660661
SIZE 360 270
SHAPEPATH /www/mysite.mysite.com/html/mapserver/data/
FONTSET /www/mysite.mysite.com/html/mapserver/fonts/fonts.list
IMAGECOLOR 178 210 225
#UNITS MILES
WEB
TEMPLATE
/www/mysite.mysite.com/html/mapserver/templates/statetemplate_nav.html
IMAGEPATH /www/mysite.mysite.com/html/mapserver/tmp/
IMAGEURL /mapserver/tmp/
END
PROJECTION
# "proj=lcc"
"proj=latlong"
"lat_0=20"
"lat_1=60"
"lon_0=-79.4460735"
END
LAYER
NAME states
STATUS DEFAULT
DATA statesptrunc
TYPE POLYGON
PROJECTION
"proj=latlong"
END
CLASS
NAME "states"
COLOR 213 213 213
OUTLINECOLOR 130 130 130
END
END #layer
END #mapfile
############## end mapfile
If I switch this mapfile to be in latlong (by changing comments at
EXTENT and PROJECTION), and pass the CGI:
&mapxy=-77.051663+38.799917&buffer=.3
then it actually does the right thing... it zooms into the top right
area of the Viginia map.
However, with the mapfile as above, when I pass it:
&mapxy=-77.051663+38.799917&buffer=.3
then it sends me off somewhere else. My output template is set to
display some information including the extent, and it seems to be in
long/lat coordinates: -80.000000 35.000000 -72.000000 41.000000
This attempt was in hopes that the comment in the post that "If it's in
lat/lon MapServer will convert to the output projection before
continuing" meant that mapserver would convert my inputs to lcc, and
then do the rest appropriately, and return me an lcc map.
I then tried the alternative, where I computed the lcc-equivalent of
my -77.051663,38.799917 point. So, I ran:
&mapxy=186521.66,4397421.94&buffer=.3
But then, that threw me way off, somewhere else. It seemed that the
extent was still lcc, but it pushed me far off somewhere...
What am I doing wrong? I would prefer to be able to pass it
longitude/latitude directly (and have lcc results).
Thank you very much, in advance, for your help!
Brian
>>>>>>
Are you using parameters like mapxy and buffer to do this or some other
method? Since your output map is lcc this isn't hard. You just need to
convert
your center point from lat/lon to lcc and then generate the exent around
that
computed point. The CGI program (compiled with Proj.4) has built-in
capabilities
to do this. For example, assuming a non-geographic output projection you
can
set mapext or mapxy in the output projection or in lat/lon. If it's in
lat/lon MapServer
will convert to the output projection before continuing. You can use the
buffer
parameter to specify a radius to use around the mapxy point. In your
case you'd
set it to ½ a mile (in output units).
Hope this helps.
Steve
Stephen Lime
Internet Applications Analyst
Minnesota DNR
500 Lafayette Road
St. Paul, MN 55155
651-297-2937
>>> Bill Lubanovic <bill at madscheme.com> 09/06/01 04:36PM >>>
Although I've read the docs, installed the demo, and have built working
applications, I'm stuck on something that sounds simple.
I'm trying to plot a map with its center at a given lat/lon and a radius
of a given number of miles. The map would actually be the bounding box
of this circle, not clipped to the circle. And it would only be a
circle in lat/lon space (Mercator), not in any other projection, right?
The data files (state/county/etc. boundaries) are good, and the
projection from lat/lon to lcc and other projections works in the
template file. But I'm not sure how to define the extent around the
centerpoint, since the original lat/lon (DD) space doesn't equate to
miles. I'm approximating the bounding box by trial and error. Should I
use proj.4 to calculate the extents in miles for each lat/lon
centerpoint? Or is there a way in Mapserver to specify this directly?
Thanks,
Bill Lubanovic
Mad Scheme Limited
More information about the MapServer-users
mailing list