CoordinateSequences.copy(sequence, fromIndex, newSeq, 0, size); return newSeq;
public LinearRing createLinearRing(CoordinateSequence cs) { if (cs.getCoordinate(0).equals(cs.getCoordinate(cs.size() - 1))) return super.createLinearRing(cs); // add a new coordinate to close the ring CoordinateSequenceFactory csFact = getCoordinateSequenceFactory(); CoordinateSequence csNew = csFact.create(cs.size() + 1, cs.getDimension()); CoordinateSequences.copy(cs, 0, csNew, 0, cs.size()); CoordinateSequences.copyCoord(csNew, 0, csNew, csNew.size() - 1); return super.createLinearRing(csNew); }
public static CoordinateSequence extend(CoordinateSequenceFactory fact, CoordinateSequence seq, int size) { CoordinateSequence newseq = fact.create(size, seq.getDimension()); int n = seq.size(); copy(seq, 0, newseq, 0, n); // fill remaining coordinates with end point, if it exists if (n > 0) { for (int i = n; i < size; i++) copy(seq, n-1, newseq, i, 1); } return newseq; }
private static CoordinateSequence createClosedRing(CoordinateSequenceFactory fact, CoordinateSequence seq, int size) { CoordinateSequence newseq = fact.create(size, seq.getDimension()); int n = seq.size(); copy(seq, 0, newseq, 0, n); // fill remaining coordinates with start point for (int i = n; i < size; i++) copy(seq, 0, newseq, i, 1); return newseq; }
/** * Creates a {@link MultiPoint} using the * points in the given {@link CoordinateSequence}. * A <code>null</code> or empty CoordinateSequence creates an empty MultiPoint. * * @param coordinates a CoordinateSequence (possibly empty), or <code>null</code> * @return a MultiPoint geometry */ public MultiPoint createMultiPoint(CoordinateSequence coordinates) { if (coordinates == null) { return createMultiPoint(new Point[0]); } Point[] points = new Point[coordinates.size()]; for (int i = 0; i < coordinates.size(); i++) { CoordinateSequence ptSeq = getCoordinateSequenceFactory() .create(1, coordinates.getDimension(), coordinates.getMeasures()); CoordinateSequences.copy(coordinates, i, ptSeq, 0, 1); points[i] = createPoint(ptSeq); } return createMultiPoint(points); }
public void testCopyToLargerDim() { PackedCoordinateSequenceFactory csFactory = new PackedCoordinateSequenceFactory(); CoordinateSequence cs2D = createTestSequence(csFactory, 10, 2); CoordinateSequence cs3D = csFactory.create(10, 3); CoordinateSequences.copy(cs2D, 0, cs3D, 0, cs3D.size()); assertTrue(CoordinateSequences.isEqual(cs2D, cs3D)); }
public void testCopyToSmallerDim() { PackedCoordinateSequenceFactory csFactory = new PackedCoordinateSequenceFactory(); CoordinateSequence cs3D = createTestSequence(csFactory, 10, 3); CoordinateSequence cs2D = csFactory.create(10, 2); CoordinateSequences.copy(cs3D, 0, cs2D, 0, cs2D.size()); assertTrue(CoordinateSequences.isEqual(cs2D, cs3D)); }
private static void doTestCopy(CoordinateSequenceFactory factory, int dimension) { // arrange CoordinateSequence sequence = createSequenceFromOrdinates(factory, dimension); if (sequence.size() <= 7) { System.out.println("sequence has a size of " + sequence.size() + ". Execution of this test needs a sequence "+ "with more than 6 coordinates."); return; } CoordinateSequence fullCopy = factory.create(sequence.size(), dimension); CoordinateSequence partialCopy = factory.create(sequence.size() - 5, dimension); // act CoordinateSequences.copy(sequence, 0, fullCopy, 0, sequence.size()); CoordinateSequences.copy(sequence, 2, partialCopy, 0, partialCopy.size()); // assert for (int i = 0; i < fullCopy.size(); i++) checkCoordinateAt(sequence, i, fullCopy, i, dimension); for (int i = 0; i < partialCopy.size(); i++) checkCoordinateAt(sequence, 2 + i, partialCopy, i, dimension); // ToDo test if dimensions don't match }