public byte[] write(Geometry geom) { try { ByteArrayOutputStream out = new ByteArrayOutputStream(); DataOutput output = new DataOutputStream(out); write(geom, output); return out.toByteArray(); } catch (IOException e) { throw new RuntimeException("Error writing TWKB geometry.", e); } }
@Override public byte[] toBinary() { byte[] bytes = null; if (footprint == null) { bytes = new byte[] {}; } else { bytes = new TWKBWriter().write(footprint); } final ByteBuffer buf = super.binaryBuffer(bytes.length); buf.put(bytes); return buf.array(); }
/** * Converts a JTS geometry to binary using JTS a Well Known Binary writer * * @param geometry The JTS geometry * @return The binary representation of the geometry */ public static byte[] geometryToBinary( final Geometry geometry, final @Nullable Integer precision) { if (precision == null) { return new WKBWriter().write(geometry); } return new TWKBWriter(precision).write(geometry); }
@Override public InternalRow serialize(T obj) { byte[] bytes = new TWKBWriter().write(obj); InternalRow returnRow = new GenericInternalRow(bytes.length); returnRow.update(0, bytes); return returnRow; }
} else if (Geometry.class.isAssignableFrom(binding)) { final TWKBWriter writer = new TWKBWriter(); final byte[] buffer = writer.write((Geometry) value); Varint.writeUnsignedVarInt(buffer.length, output); output.write(buffer);
private void writeGeometryCollection( GeometryCollection geoms, PrecisionWriter precision, DataOutput output) throws IOException { Varint.writeUnsignedVarInt(geoms.getNumGeometries(), output); for (int i = 0; i < geoms.getNumGeometries(); i++) { Geometry geom = geoms.getGeometryN(i); write(geom, output); } }
hashCentroid( reader.read( writer.write( mathTransform != null ? JTS.transform(geometry, mathTransform) : geometry)));
@Override public byte[] toBinary() { final byte[] crsBinary = isDefaultCrs(crsCode) ? new byte[0] : StringUtils.stringToBinary(crsCode); final byte[] superBinary = super.toBinary(); final byte[] geometryBinary = new TWKBWriter().write(queryGeometry); final ByteBuffer buf = ByteBuffer.allocate( superBinary.length + geometryBinary.length + crsBinary.length + VarintUtils.unsignedIntByteLength(compareOp.ordinal()) + VarintUtils.unsignedIntByteLength(nonSpatialCompareOp.ordinal()) + VarintUtils.unsignedIntByteLength(crsBinary.length) + VarintUtils.unsignedIntByteLength(superBinary.length)); VarintUtils.writeUnsignedInt(compareOp.ordinal(), buf); VarintUtils.writeUnsignedInt(nonSpatialCompareOp.ordinal(), buf); VarintUtils.writeUnsignedInt(crsBinary.length, buf); VarintUtils.writeUnsignedInt(superBinary.length, buf); buf.put(crsBinary); buf.put(superBinary); buf.put(geometryBinary); return buf.array(); }
/** * Create an AttributeValue from the SimpleFeature's attributes * * @param sf * @param sft * @return */ public static synchronized AvroAttributeValues buildAttributeValue( final SimpleFeature sf, final SimpleFeatureType sft) { final AvroAttributeValues attributeValue = new AvroAttributeValues(); final List<ByteBuffer> values = new ArrayList<>(sft.getAttributeCount()); attributeValue.setSerializationVersion( ByteBuffer.wrap(new byte[] {FieldUtils.SERIALIZATION_VERSION})); attributeValue.setFid(sf.getID()); for (final AttributeDescriptor attr : sft.getAttributeDescriptors()) { final Object o = sf.getAttribute(attr.getLocalName()); byte[] bytes; if (o instanceof Geometry) { bytes = WKB_WRITER.write((Geometry) o); } else { final FieldWriter fw = FieldUtils.getDefaultWriterForClass(attr.getType().getBinding()); bytes = fw.writeField(o); } values.add(ByteBuffer.wrap(bytes)); } attributeValue.setValues(values); return attributeValue; }