source: josm/trunk/src/org/openstreetmap/josm/data/validation/tests/RightAngleBuildingTest.java@ 17405

Last change on this file since 17405 was 17405, checked in by GerdP, 3 years ago

fix #20038: Autofix in RightAngleBuildingTest should be removed

  • remove code which creates a rather useless move command
  • Property svn:eol-style set to native
File size: 2.4 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data.validation.tests;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.util.List;
7
8import org.openstreetmap.josm.data.osm.Node;
9import org.openstreetmap.josm.data.osm.Way;
10import org.openstreetmap.josm.data.validation.Severity;
11import org.openstreetmap.josm.data.validation.Test;
12import org.openstreetmap.josm.data.validation.TestError;
13import org.openstreetmap.josm.gui.progress.ProgressMonitor;
14import org.openstreetmap.josm.spi.preferences.Config;
15import org.openstreetmap.josm.tools.Pair;
16
17/**
18 * Checks for buildings with angles close to right angle.
19 *
20 * @author marxin
21 * @since 13670
22 */
23public class RightAngleBuildingTest extends Test {
24
25 /** Maximum angle difference from right angle that is considered as invalid. */
26 protected double maxAngleDelta;
27
28 /** Minimum angle difference from right angle that is considered as invalid. */
29 protected double minAngleDelta;
30
31 /**
32 * Constructs a new {@code RightAngleBuildingTest} test.
33 */
34 public RightAngleBuildingTest() {
35 super(tr("Almost right angle buildings"),
36 tr("Checks for buildings that have angles close to right angle and are not orthogonalized."));
37 }
38
39 @Override
40 public void visit(Way w) {
41 if (!w.isUsable() || !w.isClosed() || !isBuilding(w) || !IN_DOWNLOADED_AREA_STRICT.test(w)) return;
42
43 List<Pair<Double, Node>> angles = w.getAngles();
44 for (Pair<Double, Node> pair: angles) {
45 if (checkAngle(pair.a)) {
46 TestError.Builder builder = TestError.builder(this, Severity.OTHER, 3701)
47 .message(tr("Building with an almost square angle"))
48 .primitives(w)
49 .highlight(pair.b);
50 errors.add(builder.build());
51 return;
52 }
53 }
54 }
55
56 @Override
57 public void startTest(ProgressMonitor monitor) {
58 super.startTest(monitor);
59 maxAngleDelta = Config.getPref().getDouble("validator.RightAngleBuilding.maximumDelta", 10.0);
60 minAngleDelta = Config.getPref().getDouble("validator.RightAngleBuilding.minimumDelta", 1.0);
61 }
62
63 private boolean checkAngle(double angle) {
64 double difference = Math.abs(angle - 90);
65 return difference > minAngleDelta && difference < maxAngleDelta;
66 }
67}
Note: See TracBrowser for help on using the repository browser.