#1 Fri 24 August 2007 16:03
- anaxa_gore
- Juste Inscrit !
- Date d'inscription: 9 Jul 2007
- Messages: 7
Couleurs avec Styled Layer Descriptor
Bonjour à tous.
J'espère poster dans la bonne section !
Voilà, je termine mon stage dans 2 semaines et j'ai un problème sur la mise en place des couleurs pour la représentation d'un raster.
J'utilise les données au format .hgt (SRTM de la NASA). Je code en java, avec la librairie GeoTools.
Pour faire ressortir les données affichées sur le raster, j'aimerais avoir uniquement la mer en bleu, et le relief en niveau de gris. J'ai donc mis en place le style suivant :
Code:
<StyledLayerDescriptor version="1.0.0" xmlns:ogc="http://www.opengis.net"> <NamedLayer> <Name>A colored raster</Name> <UserStyle> <Name>Raster 1</Name> <IsDefault>1</IsDefault> <FeatureTypeStyle> <Rule> <Name>main</Name> <RasterSymbolizer> <Opacity>1.0</Opacity> <ColorMap> <ColorMapEntry color="#1e90ff" quantity="-50"/> <ColorMapEntry color="#000000" quantity="0"/> <ColorMapEntry color="#080808" quantity="10"/> <ColorMapEntry color="#080808" quantity="20"/> <ColorMapEntry color="#080808" quantity="30"/> <ColorMapEntry color="#141414" quantity="40"/> <ColorMapEntry color="#141414" quantity="50"/> <ColorMapEntry color="#141414" quantity="60"/> <ColorMapEntry color="#262626" quantity="70"/> <ColorMapEntry color="#262626" quantity="80"/> <ColorMapEntry color="#262626" quantity="90"/> <ColorMapEntry color="#2E2E2E" quantity="100"/> <ColorMapEntry color="#2E2E2E" quantity="200"/> <ColorMapEntry color="#3D3D3D" quantity="300"/> <ColorMapEntry color="#3D3D3D" quantity="400"/> <ColorMapEntry color="#3D3D3D" quantity="500"/> <ColorMapEntry color="#454545" quantity="600"/> <ColorMapEntry color="#454545" quantity="700"/> <ColorMapEntry color="#454545" quantity="800"/> <ColorMapEntry color="#545454" quantity="900"/> <ColorMapEntry color="#545454" quantity="1000"/> <ColorMapEntry color="#545454" quantity="1100"/> <ColorMapEntry color="#636363" quantity="1200"/> <ColorMapEntry color="#636363" quantity="1300"/> <ColorMapEntry color="#636363" quantity="1400"/> <ColorMapEntry color="#707070" quantity="1500"/> <ColorMapEntry color="#707070" quantity="1600"/> <ColorMapEntry color="#707070" quantity="1700"/> <ColorMapEntry color="#7a7a7a" quantity="1800"/> <ColorMapEntry color="#7a7a7a" quantity="1900"/> <ColorMapEntry color="#7a7a7a" quantity="2000"/> <ColorMapEntry color="#878787" quantity="2100"/> <ColorMapEntry color="#878787" quantity="2200"/> <ColorMapEntry color="#878787" quantity="2300"/> <ColorMapEntry color="#9c9c9c" quantity="2400"/> <ColorMapEntry color="#9c9c9c" quantity="2500"/> <ColorMapEntry color="#9c9c9c" quantity="2600"/> <ColorMapEntry color="#b8b8b8" quantity="2700"/> <ColorMapEntry color="#b8b8b8" quantity="2800"/> <ColorMapEntry color="#b8b8b8" quantity="2900"/> <ColorMapEntry color="#c4c4c4" quantity="3000"/> <ColorMapEntry color="#c4c4c4" quantity="3500"/> <ColorMapEntry color="#c4c4c4" quantity="4000"/> <ColorMapEntry color="#d1d1d1" quantity="4500"/> <ColorMapEntry color="#d1d1d1" quantity="5000"/> <ColorMapEntry color="#d1d1d1" quantity="5500"/> <ColorMapEntry color="#d9d9d9" quantity="6000"/> <ColorMapEntry color="#d9d9d9" quantity="6500"/> <ColorMapEntry color="#d9d9d9" quantity="7000"/> <ColorMapEntry color="#e0e0e0" quantity="7500"/> <ColorMapEntry color="#e0e0e0" quantity="8000"/> <ColorMapEntry color="#e0e0e0" quantity="8500"/> <ColorMapEntry color="#ffffff" quantity="9000"/> <ColorMapEntry color="#ffffff" quantity="9500"/> <ColorMapEntry color="#ffffff" quantity="10000"/> </ColorMap> <OverlapBehavior> <AVERAGE/> </OverlapBehavior> <ShadedRelief/> </RasterSymbolizer> </Rule> </FeatureTypeStyle> </UserStyle> </NamedLayer> </StyledLayerDescriptor>
Le problème est que suivant le nombre de SRTM que je charge, le style est plus ou moins bien appliqué. Comme un petit exemple vaut mieux qu'un long discours, je joins deux cartes générées avec le même style. La seule différence est que dans un cas, j'utilise deux SRTM, et dans le second, j'en utilise quatre. Comme vous pouvez le voir, la seconde est complètement noire : on ne voit absolument pas la côte, la mer est noire, et même une bonne partie du relief est noire !
Comment puis-je faire pour avoir une carte qui ressemble toujours à celle en couleurs et pas parfois une en couleurs, parfois une en noir et blanc ?
Merci d'avance pour vos réponse !!!
Thomas
Dernière modification par anaxa_gore (Fri 24 August 2007 16:04)
Hors ligne
#2 Tue 28 August 2007 11:50
- anaxa_gore
- Juste Inscrit !
- Date d'inscription: 9 Jul 2007
- Messages: 7
Re: Couleurs avec Styled Layer Descriptor
Vraiment personne n'a d'idée ??? Je ne comprends vraiment pas pourquoi j'ai ce comportement !
Thomas
Hors ligne
#3 Tue 28 August 2007 14:54
Re: Couleurs avec Styled Layer Descriptor
Bonjour,
Utilises-tu Geoserver ? La configuration est elle correcte ? Ton problème me semble un problème de mosaicage de raster dont les valeurs n'ont pas été "étendues". Généralement (sous grass je veux dire) une fonction permet de redefinir correctement la table de couleurs. Après une recherche sur internet, je suis tombé sur un rapport de "bug" dont la résolution a été de définir un paramètre dans la config (rapport debug):
I checked deeply the issue, well it turned out that here is no issue!
You must have created the properties file by hand hence some parameters that control the reader were missing. As you noticed the color maps are different hence we need to do a color expansion before merging the images.
The MosaicIndexBuilder would have spotted this situation and would have put the following line in the properties file:
ExpandToRGB=true
If you add it manually things should start working just fine.
[ Show » ]
Simone Giannecchini - [18/Jul/07 06:35 PM ] I checked deeply the issue, well it turned out that here is no issue! You must have created the properties file by hand hence some parameters that control the reader were missing. As you noticed the color maps are different hence we need to do a color expansion before merging the images. The MosaicIndexBuilder would have spotted this situation and would have put the following line in the properties file: ExpandToRGB=true If you add it manually things should start working just fine.
autrement dit as tu utilisé le paramètre :
Code:
ExpandToRGB=true
Ma réponse peut être une grosse bêtise, mais ton problème m'a fait penser à cela.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#4 Tue 28 August 2007 14:55
- Guillaume Sueur
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 23 Sep 2005
- Messages: 331
- Site web
Re: Couleurs avec Styled Layer Descriptor
ça ne viendrait pas d'une palette adaptative ? l'allocation des couleurs
se ferait sur la première dalle, et donnerait du n'importe quoi avec les
suivantes ?
Hors ligne
#5 Fri 07 September 2007 12:30
- anaxa_gore
- Juste Inscrit !
- Date d'inscription: 9 Jul 2007
- Messages: 7
Re: Couleurs avec Styled Layer Descriptor
Bonjour et merci pour vos réponses !
Je suis désolé de ne pas avoir répondu plus tôt mais j'ai été surbooké ces derniers temps !
En fait, je n'utilise pas GeoServer. J'ai récupéré le base de donnée SRTM complète et je l'utilise telle quelle. Je traite les fichiers .hgt en récupérant les données que je place dans un WritableRaster Java. Ensuite, je définis le style que je vous ai fourni et je l'affiche grâce à la librairie GeoTools. Voila le code de l'affichage :
Code:
GridCoverageFactory gcf = new GridCoverageFactory(); GridCoverage2D gc2d = gcf.create("map",map,tmappane.getReferencedEnvelope()); SLDParser coverageParser = new SLDParser(new StyleFactoryImpl()); URL losSLD = frm.getClass().getResource("/resources/RasterColorStyle.xml"); coverageParser.setInput(losSLD); Style style = coverageParser.readXML()[0]; MapLayer map = new DefaultMapLayer(gc2d,style); map.setTitle("Map"); map.setVisible(true); map.setQuery(Query.ALL); tmappane.getMapContext().addLayer(map);
Je ne vois donc pas où je peux ajouter cette option ExpandToRGB ? Sinon, je pense également qu'il s'agit d'une sorte d'étalonnage, mais je suis vraiment largué là ! Ca fait plus d'un mois que je suis sur ce truc (par intermittence bien sûr !)
Quelqu'un aurait-il une idée supplémentaire aux vues de ce petit but de code ?
Merci d'avance !!!
Thomas
Hors ligne