Fernando said:

When in the sld i define a style whit a rule which depend on a

MaxScaleDenominator my Image server is ok, however, if i do a wfs query

i obtain the information of the features inclusive that i can´t see. I

agregate the same condition from my sld to my query filter and it works

ok. How can I get the map scale to the client for manipulate my wfs

query filter??? Are there another form to specify the filter to my

wfs???

You will have to calculate the scale yourself. There's a function in

the renderer that calculates scales if you're using Geotools;

/**

* Find the scale denominator of the map.

* Method:

* 1. find the diagonal distance (meters)

* 2. find the diagonal distance (pixels)

* 3. find the diagonal distance (meters) -- use DPI

* 4. calculate scale (#1/#2)

*

* NOTE: return the scale denominator not the actual scale (1/scale

= denominator)

*

* TODO: (SLD spec page 28):

* Since it is common to integrate the output of multiple servers into

a single displayed result in the

* web-mapping environment, it is important that different map servers

have consistent behaviour with respect to

* processing scales, so that all of the independent servers will

select or deselect rules at the same scales.

* To insure consistent behaviour, scales relative to coordinate

spaces must be handled consistently between map

* servers. For geographic coordinate systems, which use angular

units, the angular coverage of a map should be

* converted to linear units for computation of scale by using the

circumference of the Earth at the equator and

* by assuming perfectly square linear units. For linear coordinate

systems, the size of the coordinate space

* should be used directly without compensating for distortions in it

with respect to the shape of the real Earth.

*

* NOTE: we are actually doing a a much more exact calculation, and

accounting for non-square pixels (which are allowed in WMS)

*

* @param envelope

* @param coordinateReferenceSystem

* @param imageWidth

* @param imageHeight

* @param DPI screen dots per inch (OGC standard is 90)

* @return

*/

public static double calculateScale(Envelope envelope,

CoordinateReferenceSystem coordinateReferenceSystem,int imageWidth,int

imageHeight,double DPI) throws Exception

{

double diagonalGroundDistance = CRS.distance(

new Coordinate(envelope.getMinX(),envelope.getMinY()),

new Coordinate(envelope.getMaxX(),envelope.getMaxY()),

coordinateReferenceSystem

);

// pythagorus theorm

double diagonalPixelDistancePixels = Math.sqrt(

imageWidth*imageWidth+imageHeight*imageHeight);

double diagonalPixelDistanceMeters = diagonalPixelDistancePixels / DPI

* 2.54 / 100; // 2.54 = cm/inch, 100= cm/m

return diagonalGroundDistance/diagonalPixelDistanceMeters; //

remember, this is the denominator, not the actual scale;

}

----------------------------------------------------------

This mail sent through IMP: https://webmail.limegroup.com/