This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 33becdafc4f12744fa609818c9030f4fbcc988f5 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Thu May 28 12:35:25 2015 +0200 refs #7154 : ajout des dates sur les activités de palangre --- .../ui/util/tripMap/ObserveMapPaneLegendItem.java | 7 +- .../ui/util/tripMap/TripMapContentBuilder.java | 73 ++++++------ observe-swing/src/main/map/style.xml | 125 +++++++++++++++++++-- 3 files changed, 150 insertions(+), 55 deletions(-) diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/ObserveMapPaneLegendItem.java b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/ObserveMapPaneLegendItem.java index 88c5eef..a0ea0e2 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/ObserveMapPaneLegendItem.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/ObserveMapPaneLegendItem.java @@ -46,10 +46,9 @@ public class ObserveMapPaneLegendItem { return coordinates; } - public static Coordinate[] pointCoordinates() { - Coordinate[] coordinates = new Coordinate[1]; - coordinates[0] = new Coordinate(LEGEND_SYMBOL_WIDTH / 2, LEGEND_ITEM_HEIGHT / 2); - return coordinates; + public static Coordinate pointCoordinates() { + Coordinate coordinate = new Coordinate(LEGEND_SYMBOL_WIDTH / 2, LEGEND_ITEM_HEIGHT / 2); + return coordinate; } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapContentBuilder.java b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapContentBuilder.java index aa5a9cf..59ef727 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapContentBuilder.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/util/tripMap/TripMapContentBuilder.java @@ -22,16 +22,16 @@ package fr.ird.observe.ui.util.tripMap; * #L% */ -import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Predicate; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.MultiPoint; +import com.vividsolutions.jts.geom.Point; import com.vividsolutions.jts.geom.Polygon; import fr.ird.observe.ObserveTechnicalException; import fr.ird.observe.tripMap.TripMapPoint; @@ -67,7 +67,6 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -95,8 +94,9 @@ public class TripMapContentBuilder { TripMapPointType.LONGLINE_ACTIVITY_WITH_STATION, TripMapPointType.LONGLINE_ACTIVITY_WITH_INTERACTION); - protected StyledLayerDescriptor styledLayerDescriptor; + public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd/MM"); + protected StyledLayerDescriptor styledLayerDescriptor; protected MapContent mapContent; protected List<ObserveMapPaneLegendItem> legendItems; @@ -132,7 +132,6 @@ public class TripMapContentBuilder { } public void addTripLine(List<TripMapPoint> tripMapPoints) throws FactoryException { - SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM"); GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); @@ -160,7 +159,7 @@ public class TripMapContentBuilder { if (coordinatesByDay.size() > 1) { LineString line = geometryFactory.createLineString(coordinatesByDay.toArray(new Coordinate[0])); lineBuilder.add(line); - lineBuilder.add(dateFormat.format(previousPoint.getTime())); + lineBuilder.add(DATE_FORMAT.format(previousPoint.getTime())); lineBuilder.add("tripDay"); SimpleFeature feature = lineBuilder.buildFeature(null); @@ -190,7 +189,7 @@ public class TripMapContentBuilder { if (coordinatesByDay.size() > 1) { LineString line = geometryFactory.createLineString(coordinatesByDay.toArray(new Coordinate[0])); lineBuilder.add(line); - lineBuilder.add(dateFormat.format(previousPoint.getTime())); + lineBuilder.add(DATE_FORMAT.format(previousPoint.getTime())); lineBuilder.add("tripDay"); linesFeatures.add(lineBuilder.buildFeature(null)); } @@ -230,6 +229,7 @@ public class TripMapContentBuilder { polygonFeatureTypeBuilder.setName("longlineFishingZoneBuilder"); polygonFeatureTypeBuilder.setCRS(CRS.decode("EPSG:4326", true)); polygonFeatureTypeBuilder.add("zone", Polygon.class); + polygonFeatureTypeBuilder.add("label", String.class); polygonFeatureTypeBuilder.add("type", String.class); SimpleFeatureType polygonFeatureType = polygonFeatureTypeBuilder.buildFeatureType(); @@ -255,6 +255,7 @@ public class TripMapContentBuilder { Polygon polygon = geometryFactory.createPolygon(coordinates); //polygon = (Polygon) polygon.convexHull(); // permet de transformer un poliqgone croisé en polygon convex polygonBuilder.add(polygon); + polygonBuilder.add(DATE_FORMAT.format(tripMapPoints.get(indexPoint - 3).getTime())); polygonBuilder.add("longlineFishingZone"); SimpleFeature feature = polygonBuilder.buildFeature(null); polygonsFeatures.add(feature); @@ -338,7 +339,8 @@ public class TripMapContentBuilder { SimpleFeatureTypeBuilder pointFeatureTypeBuilder = new SimpleFeatureTypeBuilder(); pointFeatureTypeBuilder.setName("point Builder"); pointFeatureTypeBuilder.setCRS(CRS.decode("EPSG:4326", true)); - pointFeatureTypeBuilder.add("points", MultiPoint.class); + pointFeatureTypeBuilder.add("point", Point.class); + pointFeatureTypeBuilder.add("label", String.class); pointFeatureTypeBuilder.add("pointType", String.class); SimpleFeatureType pointFeatureType = pointFeatureTypeBuilder.buildFeatureType(); @@ -348,45 +350,34 @@ public class TripMapContentBuilder { Style stylePoints = findStyle(styledLayerDescriptor, TRIP_POINTS_LAYER_NAME, null); + Set<TripMapPointType> pointTypeInLegend = Sets.newHashSet(); - for (final TripMapPointType type : TripMapPointType.values()) { - - Iterable<Coordinate> coordinates = Iterables.transform( - Iterables.filter(tripMapPoints, new Predicate<TripMapPoint>() { - @Override - public boolean apply(TripMapPoint input) { - return type.equals(input.getType()); - } - }), - new Function<TripMapPoint, Coordinate>() { - @Override - public Coordinate apply(TripMapPoint input) { - return new Coordinate(input.getLongitude(), input.getLatitude()); - } - }); - - ArrayList<Coordinate> coordinatesArray = Lists.newArrayList(coordinates); - if (! coordinatesArray.isEmpty()) { - MultiPoint points = geometryFactory.createMultiPoint(coordinatesArray.toArray(new Coordinate[0])); - pointBuilder.add(points); - pointBuilder.add(type.name()); - pointsFeatures.add(pointBuilder.buildFeature(null)); + for (TripMapPoint tripMapPoint : tripMapPoints) { + Coordinate coordinate = new Coordinate(tripMapPoint.getLongitude(), tripMapPoint.getLatitude()); + TripMapPointType type = tripMapPoint.getType(); - // add point in legend - if (TRIP_MAP_POINT_TYPES_IN_LEGEND.contains(type)) { - points = geometryFactory.createMultiPoint(ObserveMapPaneLegendItem.pointCoordinates()); - pointBuilder.add(points); - pointBuilder.add(type.name()); + Point point = geometryFactory.createPoint(coordinate); + pointBuilder.add(point); + pointBuilder.add(DATE_FORMAT.format(tripMapPoint.getTime())); + pointBuilder.add(type.name()); + pointsFeatures.add(pointBuilder.buildFeature(null)); - ObserveMapPaneLegendItem legendPoint = new ObserveMapPaneLegendItem( - pointBuilder.buildFeature(null), - stylePoints, - type.getLabel()); - legendItems.add(legendPoint); - } + // add point in legend + if (TRIP_MAP_POINT_TYPES_IN_LEGEND.contains(type) && ! pointTypeInLegend.contains(type)) { + point = geometryFactory.createPoint(ObserveMapPaneLegendItem.pointCoordinates()); + pointBuilder.add(point); + pointBuilder.add(""); + pointBuilder.add(type.name()); + ObserveMapPaneLegendItem legendPoint = new ObserveMapPaneLegendItem( + pointBuilder.buildFeature(null), + stylePoints, + type.getLabel()); + legendItems.add(legendPoint); + pointTypeInLegend.add(type); } + } Layer pointsLayer = new FeatureLayer(pointsFeatures, stylePoints); diff --git a/observe-swing/src/main/map/style.xml b/observe-swing/src/main/map/style.xml index 15b2bd9..02c2971 100644 --- a/observe-swing/src/main/map/style.xml +++ b/observe-swing/src/main/map/style.xml @@ -101,6 +101,27 @@ <CssParameter name="fill-opacity">0.5</CssParameter> </Fill> </PolygonSymbolizer> + <TextSymbolizer> + <Label> + <ogc:PropertyName>label</ogc:PropertyName> + </Label> + <Font> + <CssParameter name="font-size">14</CssParameter> + <CssParameter name="font-style">normal</CssParameter> + <CssParameter name="font-weight">bold</CssParameter> + </Font> + <LabelPlacement> + <PointPlacement> + <AnchorPoint> + <AnchorPointX>0.5</AnchorPointX> + <AnchorPointY>0.5</AnchorPointY> + </AnchorPoint> + </PointPlacement> + </LabelPlacement> + <Fill> + <CssParameter name="fill">#000000</CssParameter> + </Fill> + </TextSymbolizer> </Rule> </FeatureTypeStyle> </UserStyle> @@ -157,16 +178,10 @@ <Rule> <Name>Point seine activity in harbour</Name> <ogc:Filter> - <ogc:Or> - <ogc:PropertyIsEqualTo> - <ogc:PropertyName>pointType</ogc:PropertyName> - <ogc:Literal>SEINE_ACTIVITY_IN_HARBOUR</ogc:Literal> - </ogc:PropertyIsEqualTo> - <ogc:PropertyIsEqualTo> - <ogc:PropertyName>pointType</ogc:PropertyName> - <ogc:Literal>LONGLINE_IN_HARBOUR</ogc:Literal> - </ogc:PropertyIsEqualTo> - </ogc:Or> + <ogc:PropertyIsEqualTo> + <ogc:PropertyName>pointType</ogc:PropertyName> + <ogc:Literal>SEINE_ACTIVITY_IN_HARBOUR</ogc:Literal> + </ogc:PropertyIsEqualTo> </ogc:Filter> <PointSymbolizer> <Graphic> @@ -353,6 +368,54 @@ <FeatureTypeStyle> <Rule> + <Name>Point seine activity in harbour</Name> + <ogc:Filter> + <ogc:PropertyIsEqualTo> + <ogc:PropertyName>pointType</ogc:PropertyName> + <ogc:Literal>LONGLINE_IN_HARBOUR</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + <PointSymbolizer> + <Graphic> + <Mark> + <WellKnownName>Circle</WellKnownName> + <Fill> + <CssParameter name="fill">#7800f6</CssParameter> + </Fill> + <Stroke> + <CssParameter name="stroke">#000000</CssParameter> + <CssParameter name="stroke-width">1</CssParameter> + </Stroke> + </Mark> + <Size>12</Size> + </Graphic> + </PointSymbolizer> + <TextSymbolizer> + <Label> + <ogc:PropertyName>label</ogc:PropertyName> + </Label> + <Font> + <CssParameter name="font-size">14</CssParameter> + <CssParameter name="font-style">normal</CssParameter> + <CssParameter name="font-weight">bold</CssParameter> + </Font> + <LabelPlacement> + <PointPlacement> + <Displacement> + <DisplacementX>5</DisplacementX> + <DisplacementY>5</DisplacementY> + </Displacement> + </PointPlacement> + </LabelPlacement> + <Fill> + <CssParameter name="fill">#000000</CssParameter> + </Fill> + </TextSymbolizer> + </Rule> + </FeatureTypeStyle> + + <FeatureTypeStyle> + <Rule> <Name>Point longline activity with interaction</Name> <ogc:Filter> <ogc:PropertyIsEqualTo> @@ -375,6 +438,27 @@ <Size>12</Size> </Graphic> </PointSymbolizer> + <TextSymbolizer> + <Label> + <ogc:PropertyName>label</ogc:PropertyName> + </Label> + <Font> + <CssParameter name="font-size">14</CssParameter> + <CssParameter name="font-style">normal</CssParameter> + <CssParameter name="font-weight">bold</CssParameter> + </Font> + <LabelPlacement> + <PointPlacement> + <Displacement> + <DisplacementX>5</DisplacementX> + <DisplacementY>5</DisplacementY> + </Displacement> + </PointPlacement> + </LabelPlacement> + <Fill> + <CssParameter name="fill">#000000</CssParameter> + </Fill> + </TextSymbolizer> </Rule> </FeatureTypeStyle> @@ -402,6 +486,27 @@ <Size>16</Size> </Graphic> </PointSymbolizer> + <TextSymbolizer> + <Label> + <ogc:PropertyName>label</ogc:PropertyName> + </Label> + <Font> + <CssParameter name="font-size">14</CssParameter> + <CssParameter name="font-style">normal</CssParameter> + <CssParameter name="font-weight">bold</CssParameter> + </Font> + <LabelPlacement> + <PointPlacement> + <Displacement> + <DisplacementX>5</DisplacementX> + <DisplacementY>5</DisplacementY> + </Displacement> + </PointPlacement> + </LabelPlacement> + <Fill> + <CssParameter name="fill">#000000</CssParameter> + </Fill> + </TextSymbolizer> </Rule> </FeatureTypeStyle> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.