Hello List,
I try to realise something like a dynamic sld file. I want to get the map in
different colors for different indicators.
The data for the indicators is in an database. The colorization should be in
quantities. For example regions with a value between 1-10 should be red, with a
value between 11-20 should be green. This is a <Propertyisbetween> Filter in
SLD.
Now I try to make the number of classes for the colorization dynamic. The user
can choose the number of classes at the beginning.
I realise this with the SLD_Body parameter. Here you can see my example-file:
.....
$classifiedPHP = 'datenwert';
$indikator = 2;
//echo "$classifiedPHP";
$query = 'SELECT
min('.$classifiedPHP.'),max('.$classifiedPHP.') FROM zeitreihen_daten,gines_geo
where indikator='.$indikator.' and gines_geo.bfs=zeitreihen_daten.raumeinheit';
//$query = 'SELECT
min('.$classifiedPHP.'),max('.$classifiedPHP.') FROM gines_geo';
//echo "$query";
$result = pg_query($db,$query);
// grössten/kleinsten Wert in Array
schreiben
while ($row = pg_fetch_row($result)) {
$min = $row[0];
$max = $row[1];
//echo "$min $max";
}
?>
<script defer="defer" type="text/javascript">
//-------------Attribut nach welchem Klassifiziert
werden soll--------------------------------------
var indikator = "<?php echo $indikator; ?>";
var classified = 'daten';
var klassen =7;
//-------------Einteilung der Klassengrenzen, welche in
verwendet werden---
var classMin = <?php echo $min; ?>;
var classMax = <?php echo $max; ?>;
var schritt = (classMax-classMin)/klassen;
// var class1LB = classMin;
var class1UB = classMin + schritt;
var farbe = '#FF0000';
//-------------Definition des
Styles-----------------------------------------------------------------
var sld_spec = '<StyledLayerDescriptor
version="1.0.0" xmlns="http://www.opengis.net/sld"
xmlns:gml="http://www.opengis.net/gml"xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.opengis.net/sld
http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">';
var sld_layer_pre ='<NamedLayer> <Name>gemeinden</Name> <UserStyle> <Title>
gemsee </Title> <FeatureTypeStyle>';
var sld_layer_post ='</FeatureTypeStyle>
</UserStyle> </NamedLayer> </StyledLayerDescriptor>';
var sld_first = '<Rule> <Name>Classes</Name> <Filter> <AND> <PropertyIsEqualTo>
<PropertyName>indikator</PropertyName> <Literal>'+ indikator +'</Literal>
</PropertyIsEqualTo> <PropertyIsBetween><PropertyName>'+ classified
+'</PropertyName> <LowerBoundary> <Literal>';
var sld_mid1 = '</Literal> </LowerBoundary> <UpperBoundary> <Literal>';
var sld_mid2 = '</Literal> </UpperBoundary>
</PropertyIsBetween> </AND> </Filter> <PolygonSymbolizer> <Fill> <CssParameter
name="fill">';
var sld_last = '</CssParameter> <CssParameter
name="fill-opacity">1.00</CssParameter> </Fill> <Stroke> <CssParameter
name="stroke">#aa5500</CssParameter> </Stroke> </PolygonSymbolizer> </Rule>';
var mysld =sld_spec + sld_layer_pre +
sld_first + classMin + sld_mid1 + class1UB + sld_mid2 + farbe + sld_last;
for (i=1; i<=klassen ;i++) {
lbound = classMin + (i*schritt);
ubound = classMin + ((i+1)*schritt);
farbe = farbe.substr(1,6);
farbe=parseInt(farbe,16);
farbe=farbe-10000;
farbe=farbe.toString(16);
farbe = '#'+farbe;
mysld = mysld + sld_first + lbound +
sld_mid1 + ubound + sld_mid2 + farbe + sld_last;
}
mysld = mysld + sld_layer_post;
.....
This works fine.
I hope somebody can understand what I am doing there.
Now I have the problem of the number of the classes. If I use more than 7
classes (var klassen) there is an error. I know that the URL-String is too long
for more than 7 classes, but I need another reason for this. Has somebody an
idea to solve this problem? Perhaps I must use the original SLD File. But I
don't know if I can give a variable at a URL Parameter or so to the SLD file in
the SLD option like this for example.
wmsX.mergeNewParams({ SLD : http://localhost/SLD/mysld.sld?var1=15&var2=10 });
Thanks a lot for your help.
Greetings
Hanno
------------------------------------------
Hanno Rahn, Dipl.-Ing. (FH) Geoinformatik
ZHAW Zürcher Hochschule für Angewandte Wissenschaften Umwelt und Natürliche
Ressourcen
Fachstelle Geoinformatik
Grüental, Postfach CH-8820 Wädenswil
Tel +41 (0)58 934 5592
Fax +41 (0)58 934 5580
[EMAIL PROTECTED]
_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users