Ignore:
Timestamp:
2008-07-03T18:04:00+02:00 (16 years ago)
Author:
stoecker
Message:

added area checks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/OverlappingWays.java

    r8043 r8693  
    5252                for (List<WaySegment> duplicated : nodePairs.values())
    5353                {
    54                         int highway = 0;
    55                         int railway = 0;
     54                        int ways = duplicated.size();
    5655
    57                         if (duplicated.size() > 1)
     56                        if (ways > 1)
    5857                        {
    5958                                List<OsmPrimitive> prims = new ArrayList<OsmPrimitive>();
    6059                                List<Way> current_ways = new ArrayList<Way>();
    6160                                List<WaySegment> highlight;
     61                                int highway = 0;
     62                                int railway = 0;
     63                                int area = 0;
    6264
    6365                                for (WaySegment ws : duplicated)
    6466                                {
     67                                        String ar;
     68
    6569                                        if (ws.way.get("highway") != null)
    6670                                                highway++;
    6771                                        else if (ws.way.get("railway") != null)
    6872                                                railway++;
     73                                        ar = ws.way.get("area");
     74                                        if (ar != null && ("true".equalsIgnoreCase(ar) || "yes".equalsIgnoreCase(ar) || "1".equals(ar)))
     75                                                area++;
     76                                        if (ws.way.get("landuse") != null)
     77                                        {
     78                                                area++; ways--;
     79                                        }
    6980
    7081                                        prims.add(ws.way);
    7182                                        current_ways.add(ws.way);
    7283                                }
    73                                 /* These ways not seen before 
     84                                /* These ways not seen before
    7485                                 * If two or more of the overlapping ways are
    75                                  * highways or railways mark a seperate error   
     86                                 * highways or railways mark a seperate error
    7687                                */
    7788                                if ((highlight = ways_seen.get(current_ways)) == null)
    7889                                {
    79                                     String errortype = tr("Overlapping ways");
     90                                        String errortype;
    8091
    81                                      if (highway >1)
    82                                         errortype = tr("Overlapping highways");
    83                                      else if (railway >1)
    84                                         errortype = tr("Overlapping railways");
     92                                        if(area > 0)
     93                                        {
     94                                                if (highway == ways)
     95                                                        errortype = tr("Overlapping highways (with area)");
     96                                                else if (railway == ways)
     97                                                        errortype = tr("Overlapping railways (with area)");
     98                                                else
     99                                                        errortype = tr("Overlapping ways (with area)");
     100                                        }
     101                                        else if (highway == ways)
     102                                                errortype = tr("Overlapping highways");
     103                                        else if (railway == ways)
     104                                                errortype = tr("Overlapping railways");
     105                                        else
     106                                                errortype = tr("Overlapping ways");
    85107
    86                                      errors.add(new TestError(this, Severity.OTHER,
    87                                         tr(errortype), prims, duplicated));
    88                                      ways_seen.put(current_ways, duplicated);
     108                                        errors.add(new TestError(this, Severity.OTHER, tr(errortype), prims, duplicated));
     109                                        ways_seen.put(current_ways, duplicated);
    89110                                }
    90111                                else    /* way seen, mark highlight layer only */
    91112                                {
    92                                         for (WaySegment ws : duplicated) 
    93                                             highlight.add(ws);
     113                                        for (WaySegment ws : duplicated)
     114                                                highlight.add(ws);
    94115                                }
    95116                        }
Note: See TracChangeset for help on using the changeset viewer.