[mapserver-dev] MS vs GS aesthetics
Steve Lime
Steve.Lime at dnr.state.mn.us
Thu Sep 11 18:29:04 EDT 2008
Here's a page that references a couple of centroid options:
http://www.spatialanalysisonline.com/output/html/Polygoncentroidsandcentres.html
MapServer uses the MBR method and then falls back on a scanline conversion method
derived from polygon fill algorithms to guarantee a point in the polygon.
I could see adding a layer level parameter like LABELMETHOD to support various
algorithms.
Steve
>>> On 9/11/2008 at 5:20 PM, in message <48C952C8.5157.008F.0 at dnr.state.mn.us>,
"Steve Lime" <Steve.Lime at dnr.state.mn.us> wrote:
> I did some testing today with the test case. The mapfile as downloaded will
> give you GD output, for the
> world. If you adjust the extent to match the states shapefile and the switch
> the renderer to AGG you
> get something very close to the sample. My findings:
>
> On line thickness.
>
> AGG renders 1 pixel outline like the sample, it's simply a bit thicker. As
> MapServer sits we support only
> integer SIZE and WIDTH values. I mucked with the code today and changed both
> of those to doubles
> and with that change you can set "WIDTH .5" in a STYLE to achieve a thinner
> outline. (see my example
> below)
>
> The changes are small:
>
> - mapserver.h: change struct member types, min values for size and width go
> to 0 instead of 1 (perhaps .001
> or something like that is better)
> - mapfile.c: change parsing to expect a double, change writing to use %g in
> format strings
> - mapogcsld.c: 3 spots where need to write the size so changed %d to %g in
> format strings
> - mapagg.cpp: the were for spots where agg was expecting an int for
> style->width so I round (MS_NINT) the value
>
> The last change would be the most questionable. I can commit these changes
> if folks are interested. I think
> we do want to do this in some shape or form
>
> On missing labels:
>
> MS and GS render the same size label (e.g. 16) differently. MS labels are
> larger. In the sample the larger labels
> lead to more collisions and fewer labels on the map.
>
> On label position:
>
> GS is better here. MS currently uses a bbox midpoint test as a quick way to
> position a label in a polygon. If the result
> isn't in the feature then we fall back on another algorithm. In this case
> that method results in a few poorly placed
> labels (CA, ID for example) which lead to collisions that one might not
> exect.
>
> Curiously the code to compute a centroid is right there in mapprimitive.c.
> I'm not sure why it's not being used. I imagine
> for performance reasons. If I use that instead of the simple bbox center we
> get results very similar to the GS sample. On
> Florida's location still sucks. Clearly we should provide a couple of
> methods, perhaps letting the user choose. For regular
> geometries (e.g. parcels) the fast method is more than adequate.
>
> Anyway, if I use an outline width of .5 and the centroid algorithm for
> default placement we get something like:
>
> http://maps.dnr.state.mn.us/~stlime/test.png
>
> Steve
>
>>>> On 9/11/2008 at 4:51 PM, in message
> <d2b988930809111451h114808edw7afb3b2bd91936ef at mail.gmail.com>, "thomas
> bonfort"
> <thomas.bonfort at gmail.com> wrote:
>> I may have missed something, but it seems to me from the mapfile that
>> that output is gd rendered. The image seems to be a screenshot from
>> images pasted in a spreadsheet, and it looks as if there's some
>> softening coming from somewhere.
>>
>>> I'm not sure I believe the gs folks when they say their width is 1px,
>>> it almost looks like less... I'd be interested to know if a 0.5 width
>>> line on the trunk ms results in a similar quality of border.
>> there's no possibility yet to set fractional line widths in mapserver.
>>
>> An area where ms is way ahead of gs is in rendering linear data, as
>> the gs renderer has some recurrent artifacts, eg
>> http://sigma.openplans.org/geowebcache/service/wms?SRS=EPSG%3A900913&LAYERS=g
>
>>
> s%3Ahomepage&FORMAT=image%2Fpng&TILED=true&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMa
>
>>
> p&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&BBOX=-8237621.092929687,496
>
>> 6872.681484375,-8237468.21890625,4967025.555507813&WIDTH=256&HEIGHT=256
>> _______________________________________________
>> mapserver-dev mailing list
>> mapserver-dev at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapserver-dev
>
> _______________________________________________
> mapserver-dev mailing list
> mapserver-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-dev
More information about the mapserver-dev
mailing list