Ignore:
Timestamp:
2011-12-21T10:37:23+01:00 (8 years ago)
Author:
simon04
Message:

fix #2746 - add validation: Way connected to Area

Location:
trunk/src/org/openstreetmap/josm/data/validation
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java

    r4448 r4682  
    4848import org.openstreetmap.josm.data.validation.tests.UntaggedNode;
    4949import org.openstreetmap.josm.data.validation.tests.UntaggedWay;
     50import org.openstreetmap.josm.data.validation.tests.WayConnectedToArea;
    5051import org.openstreetmap.josm.data.validation.tests.WronglyOrderedWays;
    5152import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
     
    102103        DeprecatedTags.class, // ID 2101 .. 2199
    103104        OverlappingAreas.class, // ID 2201 .. 2299
     105        WayConnectedToArea.class, // ID 2301 .. 2399
    104106    };
    105107
  • trunk/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java

    r4627 r4682  
    2626import org.openstreetmap.josm.data.validation.TestError;
    2727import org.openstreetmap.josm.gui.mappaint.AreaElemStyle;
    28 import org.openstreetmap.josm.gui.mappaint.ElemStyle;
    2928import org.openstreetmap.josm.gui.mappaint.ElemStyles;
    3029import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
     
    117116    @Override
    118117    public void visit(Way w) {
    119         if (styles != null && !w.isClosed()) {
    120             for (ElemStyle s : styles.generateStyles(w, SCALE, null, false).a) {
    121                 if (s instanceof AreaElemStyle) {
    122                     List<Node> nodes = w.getNodes();
    123                     errors.add(new TestError(this, Severity.WARNING, tr("Area style way is not closed"), NOT_CLOSED,
    124                             Collections.singletonList(w), Arrays.asList(nodes.get(0), nodes.get(nodes.size() - 1))));
    125                     break;
    126                 }
    127             }
     118        if (!w.isClosed() && ElemStyles.hasAreaElemStyle(w, false)) {
     119            List<Node> nodes = w.getNodes();
     120            errors.add(new TestError(this, Severity.WARNING, tr("Area style way is not closed"), NOT_CLOSED,
     121                    Collections.singletonList(w), Arrays.asList(nodes.get(0), nodes.get(nodes.size() - 1))));
    128122        }
    129123    }
     
    157151            if (styles != null) {
    158152
    159                 AreaElemStyle area = null;
    160                 boolean areaStyle = false;
    161                 for (ElemStyle s : styles.generateStyles(r, SCALE, null, false).a) {
    162                     if (s instanceof AreaElemStyle) {
    163                         area = (AreaElemStyle) s;
    164                         areaStyle = true;
    165                         break;
    166                     }
    167                 }
     153                AreaElemStyle area = ElemStyles.getAreaElemStyle(r, false);
     154                boolean areaStyle = area != null;
    168155                // If area style was not found for relation then use style of ways
    169156                if (area == null) {
    170157                    for (Way w : polygon.getOuterWays()) {
    171 
    172                         for (ElemStyle s : styles.generateStyles(w, SCALE, null, true).a) {
    173                             if (s instanceof AreaElemStyle) {
    174                                 area = (AreaElemStyle) s;
    175                                 break;
    176                             }
    177                         }
     158                        area = ElemStyles.getAreaElemStyle(w, true);
    178159                        if (area != null) {
    179160                            break;
     
    189170                if (area != null) {
    190171                    for (Way wInner : polygon.getInnerWays()) {
    191                         AreaElemStyle areaInner = null;
    192                         for (ElemStyle s : styles.generateStyles(wInner, SCALE, null, false).a) {
    193                             if (s instanceof AreaElemStyle) {
    194                                 areaInner = (AreaElemStyle) s;
    195                                 break;
    196                             }
    197                         }
     172                        AreaElemStyle areaInner = ElemStyles.getAreaElemStyle(wInner, false);
    198173
    199174                        if (areaInner != null && area.equals(areaInner)) {
     
    207182                    if(!areaStyle) {
    208183                        for (Way wOuter : polygon.getOuterWays()) {
    209                             AreaElemStyle areaOuter = null;
    210                             for (ElemStyle s : styles.generateStyles(wOuter, SCALE, null, false).a) {
    211                                 if (s instanceof AreaElemStyle) {
    212                                     areaOuter = (AreaElemStyle) s;
    213                                     break;
    214                                 }
    215                             }
     184                            AreaElemStyle areaOuter = ElemStyles.getAreaElemStyle(wOuter, false);
    216185                            if (areaOuter != null && !area.equals(areaOuter)) {
    217186                                List<OsmPrimitive> l = new ArrayList<OsmPrimitive>();
  • trunk/src/org/openstreetmap/josm/data/validation/tests/OverlappingAreas.java

    r4448 r4682  
    55import java.util.Collection;
    66import java.util.Collections;
    7 import org.openstreetmap.josm.data.osm.OsmPrimitive;
    87import org.openstreetmap.josm.data.osm.QuadBuckets;
    98import org.openstreetmap.josm.data.osm.Way;
     
    1110import org.openstreetmap.josm.data.validation.Test;
    1211import org.openstreetmap.josm.data.validation.TestError;
    13 import org.openstreetmap.josm.gui.mappaint.AreaElemStyle;
    14 import org.openstreetmap.josm.gui.mappaint.ElemStyle;
    1512import org.openstreetmap.josm.gui.mappaint.ElemStyles;
    16 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
    1713import org.openstreetmap.josm.tools.Geometry;
    1814import org.openstreetmap.josm.tools.Predicate;
     
    2319    protected static int OVERLAPPING_AREAS = 2201;
    2420    protected QuadBuckets<Way> index = new QuadBuckets<Way>();
    25     private static ElemStyles styles = MapPaintStyles.getStyles();
    2621
    2722    public OverlappingAreas() {
     
    3126    @Override
    3227    public void visit(Way w) {
    33         if (w.isUsable() && w.isClosed() && hasAreaElemStyle(w)) {
     28        if (w.isUsable() && w.isClosed() && ElemStyles.hasAreaElemStyle(w, false)) {
    3429            index.add(w);
    3530        }
     
    6055    }
    6156
    62     private boolean hasAreaElemStyle(OsmPrimitive p) {
    63         for (ElemStyle s : styles.generateStyles(p, 1.0, null, false).a) {
    64             if (s instanceof AreaElemStyle) {
    65                 return true;
    66             }
    67         }
    68         return false;
    69     }
    7057}
Note: See TracChangeset for help on using the changeset viewer.