Donut Symbol.

Blammo bob.basques at CI.STPAUL.MN.US
Fri Aug 26 15:16:24 EDT 2005


All,

The need:

This is for locating points that Photographs were taken at around the ( 
few hundred thousand of them) city.  The idea is for the user to pick a 
point on a map, along with a MIN & MAX distance (in ground units) away 
from the point picked.   This Donut shaped area is where all the photo's 
that were taken and generally looking in the direction of the point 
picked, wihin 20-30 degrees for example (did I mention the photo data is 
all in a database, complete with a compass heading for the direction of 
view) and these are listed out for review by the users in a film strip 
fashion.  Like walking around the point in the field.  We have the 
selection and outputting working for the photography, but I can't seem 
to figure out a way to display this donut shape, in the map.

I'm using two circles on top of one another at the moment for this, but 
the inner area is currently filled in.   I was just trying to get to a 
point where only the donut area is filled in.   The closed Donut symbol 
shape that Paco came up with is the closest so far to what I'm looking 
for, and will do for our needs.   I don't know that this is a big enough 
deal to reprogram anything at this point.  I was just wondering if there 
were a way to handle it.

The Symbol method would be the best choice for this application as the 
View can be zoomed into and out of. at will by the users, so the donut 
shape can scale in relation to the view size. (see other problem below.)

-----------

On a related item.  Is there some sort of Symbol (PIXEL) size limit in 
place?  I can't seem to make a Symbol generate any bigger than around 
500 pixels?  If I zoom into a spot too close for example, the symbol for 
this buffer area stops getting any bigger.  There is no error generated, 
the symbol is just rendered at this max setting after a certain zoom 
level is reached.  

Some more info, I'm using multiple circles in my example, all statically 
sized (in ground units) so as I zoom in they should all stay the same 
ratio in size to each other as they grow, but when the outer circle hits 
this limit, it just stops growing, and the inner circle continue to grow 
until they reach this limit.

bobb



Steve Lime wrote:

>A dynamic donut is not possible given the way MapServer currently works.
>
>The way point symbols work is that a raster marker image is rendered based
>on the properties of the symbol and a SINGLE style. So this has to be =
>accomplished
>within the context of a symbol definition or a style definition. Multiple =
>styles will not
>help you because the base circle would already obscure anything underneath =
>it.
>
>We could change the way an ELLIPSE symbol is rendered so that if you =
>have=20
>additional second set of radii defined then that defines the hole. But the =
>problem
>still remains that you need to specify sizes for the inner and outer ring =
>which would
>involve changes to the style object- yuck.=20
>
>One could look at rendering all styles at once as well rather then in =
>turn. You'd just
>define the hole somehow as a style. Nice idea but not doable at the =
>moment.
>
>I wonder if a better approach would be to think about this particular =
>problem as
>an exercise in combining a couple of maps. You certainly can use MapServer =
>to build
>the base image, and you can also use MapServer to draw the rings in a =
>seperate
>images (draw the big ring, and then draw the hole using the background =
>color for
>the whole image). You just need to figure out how to combine them.
>
>You could use DHTML or MapScript to do this. I bet there's a way to do it =
>using straight
>CGI (draw the rings as a raster layer in the second map) if we knew more =
>about the
>application. For example, you might create the ring image and then refer =
>to it as a
>layer in the base image. With AJAX you could do that using the CGI.
>
>Steve
>
>  
>



More information about the mapserver-users mailing list