Bonjour,
J'ai un petit soucis avec la geotools que je suis en train de (re)prendre en main.
Lorsque je veux afficher un shapefile, je n'ai pas de soucis :
m'affiche bien mon shapefile sur un fon bleuté...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 private static JFrame frm = new JFrame("Tests Features"); private static MapContext mapcontext = new DefaultMapContext(DefaultGeographicCRS.WGS84); private static GTRenderer renderer = new StreamingRenderer(); private static JMapPane mappane = new JMapPane(); /** * @param args * @throws IllegalAttributeException * @throws IOException */ public static void main(String[] args) throws IllegalAttributeException, IOException { mappane.setBackground(new Color(157,201,255)); frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frm.setSize(new Dimension(800,600)); frm.setContentPane(mappane); mapcontext.setTitle("First try to display feature"); mappane.setContext(mapcontext); URL shapefile = _1_TestShape.class.getResource("/shape/bc_border.shp"); ShapefileDataStore store = new ShapefileDataStore(shapefile); String name = store.getTypeNames()[0]; FeatureSource source = store.getFeatureSource(name); StyleBuilder sb = new StyleBuilder(); PolygonSymbolizer ps = sb.createPolygonSymbolizer(new Color(253,241,187),1); Style solstyle = sb.createStyle(); solstyle.addFeatureTypeStyle(sb.createFeatureTypeStyle(ps)); MapLayer layer; layer = new DefaultMapLayer(source,solstyle); layer.setTitle("My first Shape"); layer.setVisible(true); mapcontext.addLayer(layer); mappane.setRenderer(renderer); mappane.setMapArea(mapcontext.getLayerBounds()); frm.setVisible(true); }
Mais lorsque je désire créer des "features" à la main, alors là, je n'ai plus rien à l'écran :
me fournit uniquement le fond bleu...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 private static JFrame frm = new JFrame("Tests Features"); private static MapContext mapcontext = new DefaultMapContext(DefaultGeographicCRS.WGS84); private static GTRenderer renderer = new StreamingRenderer(); private static JMapPane mappane = new JMapPane(); /** * @param args * @throws IllegalAttributeException * @throws IOException */ public static void main(String[] args) throws IllegalAttributeException, IOException { mappane.setBackground(new Color(157,201,255)); frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frm.setSize(new Dimension(800,600)); frm.setContentPane(mappane); mapcontext.setTitle("First try to display feature"); mappane.setContext(mapcontext); DefaultFeatureTypeBuilder builder = new DefaultFeatureTypeBuilder(); builder.setName("Test"); builder.add("point", Point.class); DefaultFeatureType pointType = builder.buildFeatureType(); Point pt = new GeometryFactory().createPoint(new Coordinate(0,0)); Point pt2 = new GeometryFactory().createPoint(new Coordinate(10,15)); Point pt3 = new GeometryFactory().createPoint(new Coordinate(-10,-3)); DefaultFeature feature = (DefaultFeature)pointType.create(new Object[] {pt}, "1"); DefaultFeature feature2 = (DefaultFeature)pointType.create(new Object[] {pt2}, "2"); DefaultFeature feature3 = (DefaultFeature)pointType.create(new Object[] {pt3}, "3"); // StyleBuilder sb = new StyleBuilder(); // PointSymbolizer ps = sb.createPointSymbolizer(); // Style ptStyle = sb.createStyle(); // ptStyle.addFeatureTypeStyle(sb.createFeatureTypeStyle(ps)); SLDParser parser = new SLDParser(new StyleFactoryImpl()); URL sld = _2_TestSimplePlace.class.getResource("/shape/sld.xml"); parser.setInput(sld); Style ptStyle = parser.readXML()[0]; System.out.println("FEATURES :"); System.out.println("\t" + feature); System.out.println("\t" + feature2); System.out.println("\t" + feature3); DefaultFeatureCollection col = new DefaultFeatureCollection("id",pointType); col.add(feature); col.add(feature2); col.add(feature3); MapLayer layer; layer = new DefaultMapLayer(col,ptStyle); layer.setTitle("My first Place"); layer.setVisible(true); System.out.println("LAYER :"); System.out.println("\t" + layer); System.out.println("\tBounds = " + layer.getBounds()); mapcontext.addLayer(layer); mapcontext.setAreaOfInterest(layer.getBounds()); System.out.println("MAPCONTEXT :"); System.out.println("\t" + mapcontext.getLayerBounds()); mappane.setRenderer(renderer); frm.setVisible(true); }
Comment cela se fait-il ? Y a t il une transformation a effectuer dans les coordonnées des points ??? :o:
A titre indicatif, mon SLD est le suivant :
Merci d'avance pour votre aide !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 <?xml version="1.0" encoding="UTF-8"?> <UserStyle xmlns:ogc="http://www.opengis.net"> <FeatureTypeStyle> <!-- This part specifies the point symbol --> <Rule> <PointSymbolizer> <Geometry> <ogc:PropertyName>point</ogc:PropertyName> </Geometry> <Graphic> <Mark> <WellKnownName>star</WellKnownName> <Fill> <CssParameter name="fill">#ee3b3b</CssParameter> <CssParameter name="fill-opacity">0.6</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#0000ee</CssParameter> <CssParameter name="stroke-opacity">1</CssParameter> <CssParameter name="stroke-width">1</CssParameter> </Stroke> </Mark> <Size>12.0</Size> </Graphic> </PointSymbolizer> </Rule> </FeatureTypeStyle> </UserStyle>
Thomas
PS : j'espère que je poste au bon endroit ?
Partager