@Override public String asText() { StringBuilder sb = new StringBuilder("GEOMETRYCOLLECTION "); if (is3D()) { sb.append('Z'); } if (isMeasured()) { sb.append('M'); } if (is3D() || isMeasured()) sb.append(' '); int n = numGeometries(); if (n == 0) { sb.append("EMPTY"); return sb.toString(); } sb.append('('); for (int i = 0; i < n; i++) { if (i > 0) sb.append(", "); sb.append(geometryN(i).asText()); } sb.append(')'); return sb.toString(); }
@Override public String asText() { StringBuilder sb = new StringBuilder("GEOMETRYCOLLECTION "); if (is3D()) { sb.append('Z'); } if (isMeasured()) { sb.append('M'); } if (is3D() || isMeasured()) sb.append(' '); int n = numGeometries(); if (n == 0) { sb.append("EMPTY"); return sb.toString(); } sb.append('('); for (int i = 0; i < n; i++) { if (i > 0) sb.append(", "); sb.append(geometryN(i).asText()); } sb.append(')'); return sb.toString(); }
@Override public ByteBuffer asBinary() { ArrayList<ByteBuffer> buffers = new ArrayList<ByteBuffer>(0); int size = 9; int n = numGeometries(); for (int i = 0; i < n; i++) { ByteBuffer buffer = geometryN(i).asBinary(); buffers.add(buffer); size += buffer.capacity(); } ByteBuffer wkbBuffer = ByteBuffer.allocate(size).order( ByteOrder.nativeOrder()); byte byteOrder = (byte) (wkbBuffer.order() == ByteOrder.LITTLE_ENDIAN ? 1 : 0); int wkbType = 7; if (is3D()) wkbType += 1000; if (isMeasured()) wkbType += 2000; wkbBuffer.put(0, byteOrder); wkbBuffer.putInt(1, wkbType); wkbBuffer.putInt(5, n); int offset = 9; for (int i = 0; i < n; i++) { byte[] arr = buffers.get(i).array(); System.arraycopy(arr, 0, wkbBuffer.array(), offset, arr.length); offset += arr.length; } return wkbBuffer; }
@Override public ByteBuffer asBinary() { ArrayList<ByteBuffer> buffers = new ArrayList<ByteBuffer>(0); int size = 9; int n = numGeometries(); for (int i = 0; i < n; i++) { ByteBuffer buffer = geometryN(i).asBinary(); buffers.add(buffer); size += buffer.capacity(); } ByteBuffer wkbBuffer = ByteBuffer.allocate(size).order( ByteOrder.nativeOrder()); byte byteOrder = (byte) (wkbBuffer.order() == ByteOrder.LITTLE_ENDIAN ? 1 : 0); int wkbType = 7; if (is3D()) wkbType += 1000; if (isMeasured()) wkbType += 2000; wkbBuffer.put(0, byteOrder); wkbBuffer.putInt(1, wkbType); wkbBuffer.putInt(5, n); int offset = 9; for (int i = 0; i < n; i++) { byte[] arr = buffers.get(i).array(); System.arraycopy(arr, 0, wkbBuffer.array(), offset, arr.length); offset += arr.length; } return wkbBuffer; }