in baremaps-core/src/main/java/org/apache/baremaps/database/type/geometry/GeometryDataType.java [130:159]
public void write(final ByteBuffer buffer, final int position, final Geometry value) {
// Write the geometry
if (value == null) {
buffer.put(position, (byte) 0);
} else if (value instanceof Point point) {
buffer.put(position, (byte) 1);
pointDataType.write(buffer, position + Byte.BYTES, point);
} else if (value instanceof LineString lineString) {
buffer.put(position, (byte) 2);
lineStringDataType.write(buffer, position + Byte.BYTES, lineString);
} else if (value instanceof Polygon polygon) {
buffer.put(position, (byte) 3);
polygonDataType.write(buffer, position + Byte.BYTES, polygon);
} else if (value instanceof MultiPoint multiPoint) {
buffer.put(position, (byte) 4);
multiPointDataType.write(buffer, position + Byte.BYTES, multiPoint);
} else if (value instanceof MultiLineString multiLineString) {
buffer.put(position, (byte) 5);
multiLineStringDataType.write(buffer, position + Byte.BYTES, multiLineString);
} else if (value instanceof MultiPolygon multiPolygon) {
buffer.put(position, (byte) 6);
multiPolygonDataType.write(buffer, position + Byte.BYTES, multiPolygon);
} else if (value instanceof GeometryCollection geometryCollection) {
buffer.put(position, (byte) 7);
geometryCollectionDataType.write(buffer, position + Byte.BYTES, geometryCollection);
} else {
throw new IllegalArgumentException("Unsupported geometry type: " + value.getClass());
}
}