patch for SLD (vs. 4.8.3)
Bart van den Eijnden (OSGIS)
bartvde at XS4ALL.NL
Tue Sep 12 22:46:44 PDT 2006
Hi,
can you please submit this via the Mapserver bugzilla?
Thanks in advance.
Best regards,
Bart
Rob Cermak schreef:
> Hi,
>
> We have a patch for the SLD rendering for the colormap. It seems that it is
> documented to take doubles, but all floats passed via SLD become ints through
> use of atoi.
>
> This patch only takes care of the ColorMap. This allows color rendering of
> float values.
>
> http://ak.aoos.org/data/patch/mapserver_483_mapogcsld.patch
>
> If some change could work into 4.10, that would be great.
>
> Cheers,
> Rob
>
> --- mapogcsld.c.orig 2006-09-12 15:30:39.000000000 -0800
> +++ mapogcsld.c 2006-09-12 15:32:24.000000000 -0800
> @@ -2354,6 +2354,7 @@
> char szExpression[100];
> int nClassId = 0;
> double dfOpacity = 1.0;
> + char *pch, *pchPrevious;
>
> if (!psRoot || !psLayer)
> return;
> @@ -2403,10 +2404,32 @@
> sColor.blue = hex2int(pszPreviousColor+5);
>
> /* ?? Test if pszPreviousQuality < pszQuantity */
> - sprintf(szExpression,
> - "([pixel] >= %d AND [pixel] < %d)",
> - atoi(pszPreviousQuality),
> - atoi(pszQuantity));
> +
> + /* pszQuantity and pszPreviousQuality may be integer or float */
> + pchPrevious=strchr(pszPreviousQuality,'.');
> + pch=strchr(pszQuantity,'.');
> + if (pchPrevious==NULL && pch==NULL) {
> + sprintf(szExpression,
> + "([pixel] >= %d AND [pixel] < %d)",
> + atoi(pszPreviousQuality),
> + atoi(pszQuantity));
> + } else if (pchPrevious != NULL && pch==NULL) {
> + sprintf(szExpression,
> + "([pixel] >= %f AND [pixel] < %d)",
> + atof(pszPreviousQuality),
> + atoi(pszQuantity));
> + } else if (pchPrevious == NULL && pch != NULL) {
> + sprintf(szExpression,
> + "([pixel] >= %d AND [pixel] < %f)",
> + atoi(pszPreviousQuality),
> + atof(pszQuantity));
> + } else {
> + sprintf(szExpression,
> + "([pixel] >= %f AND [pixel] < %f)",
> + atof(pszPreviousQuality),
> + atof(pszQuantity));
> + }
> +
> if (psLayer->numclasses < MS_MAXCLASSES)
> {
> initClass(&(psLayer->class[psLayer->numclasses]));
> @@ -2456,7 +2479,15 @@
> sColor.red = hex2int(pszColor+1);
> sColor.green= hex2int(pszColor+3);
> sColor.blue = hex2int(pszColor+5);
> - sprintf(szExpression, "([pixel] = %d)", atoi(pszQuantity));
> +
> + /* pszQuantity may be integer or float */
> + pch=strchr(pszQuantity,'.');
> + if (pch==NULL) {
> + sprintf(szExpression, "([pixel] = %d)", atoi(pszQuantity));
> + } else {
> + sprintf(szExpression, "([pixel] = %f)", atof(pszQuantity));
> + }
> +
> if (psLayer->numclasses < MS_MAXCLASSES)
> {
> initClass(&(psLayer->class[psLayer->numclasses]));
>
>
> Rob
>
--
Bart van den Eijnden
OSGIS, Open Source GIS
http://www.osgis.nl
More information about the MapServer-users
mailing list