public DiffSummary<BoundingBox, BoundingBox> getResult() { DiffSummary<BoundingBox, BoundingBox> r = this.result; if (r == null) { BoundingBox empty = new ReferencedEnvelope(crs); r = new DiffSummary<BoundingBox, BoundingBox>(empty, empty, empty); } return r; }
public static void print(GeoGIG geogig, Console console, DiffSummary<BoundingBox, BoundingBox> diffBounds) throws IOException { BoundingBox left = diffBounds.getLeft(); BoundingBox right = diffBounds.getRight(); Optional<BoundingBox> mergedResult = diffBounds.getMergedResult(); BoundingBox both = new ReferencedEnvelope(); if (mergedResult.isPresent()) { both = mergedResult.get(); } Ansi ansi = AnsiDecorator.newAnsi(console.isAnsiSupported()); ansi.a("left: ").a(bounds(left)).newline(); ansi.a("right: ").a(bounds(right)).newline(); ansi.a("both: ").a(bounds(both)).newline(); ansi.a("CRS: ").a(CRS.toSRS(left.getCoordinateReferenceSystem())).newline(); console.print(ansi.toString()); }
private LayerDiffSummary toSummary(@NonNull String path, @Nullable RevTree left, @Nullable RevTree right, @NonNull DiffObjectCount count, @NonNull DiffSummary<BoundingBox, BoundingBox> bounds) { BoundingBox lb = bounds.getLeft(); BoundingBox rb = bounds.getRight(); ReferencedEnvelope leftBounds = lb.isEmpty() ? null : new ReferencedEnvelope(lb); ReferencedEnvelope rightBounds = rb.isEmpty() ? null : new ReferencedEnvelope(rb); LayerDiffSummary s = LayerDiffSummary.builder()// .path(path)// .leftTreeish(left.getId())// .rightTreeish(right.getId())// .leftBounds(leftBounds)// .rightBounds(rightBounds)// .featuresAdded(count.getFeaturesAdded())// .featuresChanged(count.getFeaturesChanged())// .featuresRemoved(count.getFeaturesRemoved())// .build(); return s; }
private void testPathFiltering(String oldVersion, String newVersion, @Nullable BoundingBox expected, @Nullable String... pathFilters) { List<String> filter = ImmutableList.<String> copyOf(pathFilters); CoordinateReferenceSystem crs = DEFAULT_CRS; if (expected != null) { crs = expected.getCoordinateReferenceSystem(); } DiffSummary<BoundingBox, BoundingBox> result = geogig.command(DiffBounds.class)// .setOldVersion(oldVersion)// .setNewVersion(newVersion)// .setPathFilters(filter)// .setCRS(crs)// .call(); BoundingBox actual = result.getMergedResult().get(); if (null == expected) { assertTrue(actual.isEmpty()); } else { assertEquals(expected, actual); } }
public static void print(GeoGIG geogig, Console console, DiffSummary<BoundingBox, BoundingBox> diffBounds) throws IOException { BoundingBox left = diffBounds.getLeft(); BoundingBox right = diffBounds.getRight(); Optional<BoundingBox> mergedResult = diffBounds.getMergedResult(); BoundingBox both = new ReferencedEnvelope(); if (mergedResult.isPresent()) { both = mergedResult.get(); } Ansi ansi = AnsiDecorator.newAnsi(console.isAnsiSupported()); ansi.a("left: ").a(bounds(left)).newline(); ansi.a("right: ").a(bounds(right)).newline(); ansi.a("both: ").a(bounds(both)).newline(); ansi.a("CRS: ").a(CRS.toSRS(left.getCoordinateReferenceSystem())).newline(); console.print(ansi.toString()); }
private void testPathFiltering(String oldVersion, String newVersion, @Nullable BoundingBox expected, @Nullable String... pathFilters) { List<String> filter = ImmutableList.<String> copyOf(pathFilters); CoordinateReferenceSystem crs = DEFAULT_CRS; if (expected != null) { crs = expected.getCoordinateReferenceSystem(); } DiffSummary<BoundingBox, BoundingBox> result = geogig.command(DiffBounds.class)// .setOldVersion(oldVersion)// .setNewVersion(newVersion)// .setPathFilters(filter)// .setCRS(crs)// .call(); BoundingBox actual = result.getMergedResult().get(); if (null == expected) { assertTrue(actual.isEmpty()); } else { assertEquals(expected, actual); } }
public static void print(GeoGIG geogig, Console console, DiffSummary<BoundingBox, BoundingBox> diffBounds) throws IOException { BoundingBox left = diffBounds.getLeft(); BoundingBox right = diffBounds.getRight(); Optional<BoundingBox> mergedResult = diffBounds.getMergedResult(); BoundingBox both = new ReferencedEnvelope(); if (mergedResult.isPresent()) { both = mergedResult.get(); } Ansi ansi = AnsiDecorator.newAnsi(console.isAnsiSupported()); ansi.a("left: ").a(bounds(left)).newline(); ansi.a("right: ").a(bounds(right)).newline(); ansi.a("both: ").a(bounds(both)).newline(); ansi.a("CRS: ").a(CRS.toSRS(left.getCoordinateReferenceSystem())).newline(); console.print(ansi.toString()); }
@Test public void testDiffBetweenDifferentTrees() { String oldRefSpec = "HEAD~3"; String newRefSpec = "HEAD"; DiffSummary<BoundingBox, BoundingBox> diffBounds = geogig.command(DiffBounds.class) .setOldVersion(oldRefSpec).setNewVersion(newRefSpec) .setCRS(pointsType.getCoordinateReferenceSystem()).call(); BoundingBox bounds = diffBounds.getMergedResult().get(); assertEquals(1.0, bounds.getMinX(), 0.0); assertEquals(1.0, bounds.getMinY(), 0.0); assertEquals(10.0, bounds.getMaxX(), 0.0); assertEquals(220.0, bounds.getMaxY(), 0.0); }
public DiffSummary<BoundingBox, BoundingBox> getResult() { DiffSummary<BoundingBox, BoundingBox> r = this.diffBoundsResult; if (r == null) { BoundingBox empty = new ReferencedEnvelope(crs); r = new DiffSummary<BoundingBox, BoundingBox>(empty, empty, empty); } return r; }
@Test public void testReprojectToTargetCRS() throws Exception { DiffBounds cmd = geogig.command(DiffBounds.class).setOldVersion("HEAD^") .setNewVersion("HEAD"); DiffSummary<BoundingBox, BoundingBox> defaultCrs = cmd.call(); CoordinateReferenceSystem target = CRS.decode("EPSG:26986"); cmd.setCRS(target); DiffSummary<BoundingBox, BoundingBox> reprojected = cmd.call(); assertEquals(target, reprojected.getLeft().getCoordinateReferenceSystem()); assertEquals(target, reprojected.getRight().getCoordinateReferenceSystem()); assertEquals(target, reprojected.getMergedResult().get().getCoordinateReferenceSystem()); assertFalse(defaultCrs.getLeft().isEmpty()); assertFalse(defaultCrs.getRight().isEmpty()); assertFalse(defaultCrs.getMergedResult().get().isEmpty()); ReferencedEnvelope e = new ReferencedEnvelope(defaultCrs.getLeft()); ReferencedEnvelope expected = e.transform(target, true); assertEquals(expected, reprojected.getLeft()); }
@Test public void testDiffBetweenDifferentTrees() { String oldRefSpec = "HEAD~3"; String newRefSpec = "HEAD"; DiffSummary<BoundingBox, BoundingBox> diffBounds = geogig.command(DiffBounds.class) .setOldVersion(oldRefSpec).setNewVersion(newRefSpec) .setCRS(pointsType.getCoordinateReferenceSystem()).call(); BoundingBox bounds = diffBounds.getMergedResult().get(); assertEquals(1.0, bounds.getMinX(), 0.0); assertEquals(1.0, bounds.getMinY(), 0.0); assertEquals(10.0, bounds.getMaxX(), 0.0); assertEquals(220.0, bounds.getMaxY(), 0.0); }
@Override public void endTree(NodeRef left, NodeRef right) { String name = left == null ? right.name() : left.name(); if (NodeRef.ROOT.equals(name)) { BoundingBox lbounds = new ReferencedEnvelope(this.leftEnv); BoundingBox rbounds = new ReferencedEnvelope(this.rightEnv); BoundingBox merged; if (lbounds.isEmpty()) { merged = rbounds; } else if (rbounds.isEmpty()) { merged = lbounds; } else { merged = new ReferencedEnvelope(lbounds); merged.include(rbounds); } this.result = new DiffSummary<BoundingBox, BoundingBox>(lbounds, rbounds, merged); } }
@Test public void testReprojectToTargetCRS() throws Exception { DiffBounds cmd = geogig.command(DiffBounds.class).setOldVersion("HEAD^") .setNewVersion("HEAD"); DiffSummary<BoundingBox, BoundingBox> defaultCrs = cmd.call(); CoordinateReferenceSystem target = CRS.decode("EPSG:26986"); cmd.setCRS(target); DiffSummary<BoundingBox, BoundingBox> reprojected = cmd.call(); assertEquals(target, reprojected.getLeft().getCoordinateReferenceSystem()); assertEquals(target, reprojected.getRight().getCoordinateReferenceSystem()); assertEquals(target, reprojected.getMergedResult().get().getCoordinateReferenceSystem()); assertFalse(defaultCrs.getLeft().isEmpty()); assertFalse(defaultCrs.getRight().isEmpty()); assertFalse(defaultCrs.getMergedResult().get().isEmpty()); ReferencedEnvelope e = new ReferencedEnvelope(defaultCrs.getLeft()); ReferencedEnvelope expected = e.transform(target, true); assertEquals(expected, reprojected.getLeft()); }
@Override public void endTree(NodeRef left, NodeRef right) { String name = left == null ? right.name() : left.name(); if (NodeRef.ROOT.equals(name)) { BoundingBox lbounds = new ReferencedEnvelope(this.leftEnv); BoundingBox rbounds = new ReferencedEnvelope(this.rightEnv); BoundingBox merged; if (lbounds.isEmpty()) { merged = rbounds; } else if (rbounds.isEmpty()) { merged = lbounds; } else { merged = new ReferencedEnvelope(lbounds); merged.include(rbounds); } this.diffBoundsResult = new DiffSummary<BoundingBox, BoundingBox>(lbounds, rbounds, merged); } }
@Test public void testDefaultCrs() { DiffSummary<BoundingBox, BoundingBox> diffBounds = geogig.command(DiffBounds.class) .setOldVersion("HEAD^").setNewVersion("HEAD").call(); assertEquals(DEFAULT_CRS, diffBounds.getLeft().getCoordinateReferenceSystem()); assertEquals(DEFAULT_CRS, diffBounds.getRight().getCoordinateReferenceSystem()); assertEquals(DEFAULT_CRS, diffBounds.getMergedResult().get().getCoordinateReferenceSystem()); }
@Test public void testDiffBetweenIdenticalTrees() { String oldRefSpec = "HEAD"; String newRefSpec = "HEAD"; DiffSummary<BoundingBox, BoundingBox> diffBounds = geogig.command(DiffBounds.class) .setOldVersion(oldRefSpec).setNewVersion(newRefSpec).call(); assertTrue(diffBounds.getLeft().isEmpty()); assertTrue(diffBounds.getRight().isEmpty()); assertTrue(diffBounds.getMergedResult().get().isEmpty()); }
@Test public void testDefaultCrs() { DiffSummary<BoundingBox, BoundingBox> diffBounds = geogig.command(DiffBounds.class) .setOldVersion("HEAD^").setNewVersion("HEAD").call(); assertEquals(DEFAULT_CRS, diffBounds.getLeft().getCoordinateReferenceSystem()); assertEquals(DEFAULT_CRS, diffBounds.getRight().getCoordinateReferenceSystem()); assertEquals(DEFAULT_CRS, diffBounds.getMergedResult().get().getCoordinateReferenceSystem()); }
@Test public void testDiffBetweenIdenticalTrees() { String oldRefSpec = "HEAD"; String newRefSpec = "HEAD"; DiffSummary<BoundingBox, BoundingBox> diffBounds = geogig.command(DiffBounds.class) .setOldVersion(oldRefSpec).setNewVersion(newRefSpec).call(); assertTrue(diffBounds.getLeft().isEmpty()); assertTrue(diffBounds.getRight().isEmpty()); assertTrue(diffBounds.getMergedResult().get().isEmpty()); }
@Test public void testReprojectToTargetBucketTree() throws Exception { final int leftCount = CanonicalNodeNameOrder.normalizedSizeLimit(0) * 2; final int rightCount = CanonicalNodeNameOrder.normalizedSizeLimit(0) * 3; WorkingTree workingTree = geogig.getRepository().workingTree(); final String typeName = "newpoints"; final DefaultProgressListener listener = new DefaultProgressListener(); workingTree.insert(new TestFeatureIterator(typeName, leftCount), listener); geogig.command(AddOp.class).call(); workingTree.insert(new TestFeatureIterator(typeName, rightCount), listener); {// sanity check long diffFeatures = geogig.command(DiffCount.class).setOldVersion("STAGE_HEAD") .setNewVersion("WORK_HEAD").call().featureCount(); assertEquals(rightCount - leftCount, diffFeatures); } DiffBounds cmd = geogig.command(DiffBounds.class).setOldVersion("STAGE_HEAD") .setNewVersion("WORK_HEAD"); final CoordinateReferenceSystem nativeCrs = CRS.decode("EPSG:3857"); final DiffSummary<BoundingBox, BoundingBox> diffInNativeCrs = cmd.setCRS(nativeCrs).call(); CoordinateReferenceSystem targetcrs = CRS.decode("EPSG:4326", true); cmd.setCRS(targetcrs); DiffSummary<BoundingBox, BoundingBox> reprojected = cmd.call(); assertEquals(targetcrs, reprojected.getLeft().getCoordinateReferenceSystem()); assertEquals(targetcrs, reprojected.getRight().getCoordinateReferenceSystem()); assertEquals(targetcrs, reprojected.getMergedResult().get().getCoordinateReferenceSystem()); ReferencedEnvelope e = new ReferencedEnvelope(diffInNativeCrs.getRight()); ReferencedEnvelope expected = e.transform(targetcrs, true); BoundingBox actual = reprojected.getRight(); assertEquals(expected, actual); }
@Test public void testReprojectToTargetBucketTree() throws Exception { final int leftCount = CanonicalNodeNameOrder.normalizedSizeLimit(0) * 2; final int rightCount = CanonicalNodeNameOrder.normalizedSizeLimit(0) * 3; WorkingTree workingTree = geogig.getRepository().workingTree(); final String typeName = "newpoints"; final DefaultProgressListener listener = new DefaultProgressListener(); workingTree.insert(new TestFeatureIterator(typeName, leftCount), listener); geogig.command(AddOp.class).call(); workingTree.insert(new TestFeatureIterator(typeName, rightCount), listener); {// sanity check long diffFeatures = geogig.command(DiffCount.class).setOldVersion("STAGE_HEAD") .setNewVersion("WORK_HEAD").call().featureCount(); assertEquals(rightCount - leftCount, diffFeatures); } DiffBounds cmd = geogig.command(DiffBounds.class).setOldVersion("STAGE_HEAD") .setNewVersion("WORK_HEAD"); final CoordinateReferenceSystem nativeCrs = CRS.decode("EPSG:3857"); final DiffSummary<BoundingBox, BoundingBox> diffInNativeCrs = cmd.setCRS(nativeCrs).call(); CoordinateReferenceSystem targetcrs = CRS.decode("EPSG:4326", true); cmd.setCRS(targetcrs); DiffSummary<BoundingBox, BoundingBox> reprojected = cmd.call(); assertEquals(targetcrs, reprojected.getLeft().getCoordinateReferenceSystem()); assertEquals(targetcrs, reprojected.getRight().getCoordinateReferenceSystem()); assertEquals(targetcrs, reprojected.getMergedResult().get().getCoordinateReferenceSystem()); ReferencedEnvelope e = new ReferencedEnvelope(diffInNativeCrs.getRight()); ReferencedEnvelope expected = e.transform(targetcrs, true); BoundingBox actual = reprojected.getRight(); assertEquals(expected, actual); }