/** * Clip this feature on a {@link MultiPolygon} * * @param clipping * The {@link MultiPolygon} to clip to * @param clipType * The clip type (AND, OR, XOR or NOT). * @return The clip object containing the clipped features. */ public Clip clip(final MultiPolygon clipping, final ClipType clipType) { return new Clip(clipType, this, clipping); }
public Clip(final ClipType clipType, final MultiPolygon subject, final MultiPolygon clipping) { this.clipType = clipType; this.clip = null; this.clipMulti = clip(subject, clipping); }
@Test public void testPolyLineNot() { final List<? extends PolyLine> clips = SUBJECT_POLYLINE.clip(CLIPPING, ClipType.NOT) .getClip(); Assert.assertEquals(3, clips.size()); }
final Clip clip = MultiPolygon.forPolygon(Rectangle.MAXIMUM).clip(allCountries, ClipType.NOT); final MultiPolygon result = clip.getClipMultiPolygon(); resultMap.put(ISOCountryTag.COUNTRY_MISSING, result); try
private List<? extends PolyLine> clip(final Polygon subject, final Polygon clipping) { switch (this.clipType) { case AND: return toPolygons(new PolygonClipper(clipping).and(subject)); case OR: return toPolygons(new PolygonClipper(clipping).union(subject)); case NOT: return toPolygons(new PolygonClipper(clipping).not(subject)); case XOR: return toPolygons(new PolygonClipper(clipping).xor(subject)); default: throw new CoreException("Invalid Clip Type."); } }
@Test public void testPolyLineOr() { final List<? extends PolyLine> clips = SUBJECT_POLYLINE.clip(CLIPPING, ClipType.OR) .getClip(); Assert.assertEquals(4, clips.size()); }
@Test public void testMultiPolygonAnd() { final MultiPolygon clipped = SUBJECT_MULTIPOLYGON.clip(CLIPPING, ClipType.AND) .getClipMultiPolygon(); Assert.assertEquals(1, clipped.outers().size()); Assert.assertEquals(2, clipped.inners().size()); }
@Test public void testPolyLineAnd() { final List<? extends PolyLine> clipped = SUBJECT_POLYLINE.clip(CLIPPING, ClipType.AND) .getClip(); Assert.assertEquals(4, clipped.size()); }
@Test public void testMultiPolygonNot() { final MultiPolygon clipped = SUBJECT_MULTIPOLYGON.clip(CLIPPING, ClipType.NOT) .getClipMultiPolygon(); Assert.assertEquals(2, clipped.outers().size()); Assert.assertEquals(0, clipped.inners().size()); }
/** * @param clipping * The {@link MultiPolygon} clipping that {@link MultiPolygon} * @param clipType * The type of clip (union, or, and or xor) * @return The {@link Clip} container, that can return the clipped {@link MultiPolygon} */ public Clip clip(final MultiPolygon clipping, final ClipType clipType) { return new Clip(clipType, this, clipping); }
@Test public void testPolyLineXor() { final List<? extends PolyLine> clipped = SUBJECT_POLYLINE.clip(CLIPPING, ClipType.XOR) .getClip(); Assert.assertEquals(5, clipped.size()); } }
@Test public void testMultiPolygonOr() { final MultiPolygon clipped = SUBJECT_MULTIPOLYGON.clip(CLIPPING, ClipType.OR) .getClipMultiPolygon(); Assert.assertEquals(1, clipped.outers().size()); Assert.assertEquals(0, clipped.inners().size()); }
/** * Clip this feature on a {@link Polygon} * * @param clipping * The {@link Polygon} to clip to * @param clipType * The clip type (AND, OR, XOR or NOT). * @return The clip object containing the clipped features. */ public Clip clip(final Polygon clipping, final ClipType clipType) { return new Clip(clipType, this, clipping); }
@Test public void testPolygonXor() { final List<? extends PolyLine> clips = SUBJECT.clip(CLIPPING, ClipType.XOR).getClip(); Assert.assertEquals(4, clips.size()); }
@Test public void testMultiPolygonXor() { final MultiPolygon clipped = SUBJECT_MULTIPOLYGON.clip(CLIPPING, ClipType.XOR) .getClipMultiPolygon(); Assert.assertEquals(4, clipped.outers().size()); Assert.assertEquals(0, clipped.inners().size()); }
@Test public void testPolyLineXor() { final List<? extends PolyLine> clips = SUBJECT_POLYLINE.clip(CLIPPING, ClipType.XOR) .getClip(); Assert.assertEquals(4, clips.size()); } }
@Test public void testPolygonOr() { final MultiPolygon clipped = SUBJECT.clip(CLIPPING, ClipType.OR).getClipMultiPolygon(); Assert.assertEquals(1, clipped.outers().size()); Assert.assertEquals(2, clipped.inners().size()); }
@Test public void testPolyLineNot() { final List<? extends PolyLine> clipped = SUBJECT_POLYLINE.clip(CLIPPING, ClipType.NOT) .getClip(); Assert.assertEquals(5, clipped.size()); }