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; }
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()); }
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()); }
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 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 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 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 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); }