in src/main/java/org/apache/doris/kafka/connector/converter/type/util/GeoUtils.java [39:66]
public static Object handleGeoStructData(Object sourceValue) {
// the Geometry datatype in MySQL will be converted to
// a String with Json format
Struct geometryStruct = (Struct) sourceValue;
try {
byte[] wkb = geometryStruct.getBytes("wkb");
String geoJson = OGCGeometry.fromBinary(ByteBuffer.wrap(wkb)).asGeoJson();
JsonNode originGeoNode = objectMapper.readTree(geoJson);
Optional<Integer> srid = Optional.ofNullable(geometryStruct.getInt32("srid"));
Map<String, Object> geometryInfo = new HashMap<>();
String geometryType = originGeoNode.get("type").asText();
geometryInfo.put("type", geometryType);
if ("GeometryCollection".equals(geometryType)) {
geometryInfo.put("geometries", originGeoNode.get("geometries"));
} else {
geometryInfo.put("coordinates", originGeoNode.get("coordinates"));
}
geometryInfo.put("srid", srid.orElse(0));
return geometryInfo;
} catch (Exception e) {
LOGGER.warn("Failed to parse Geometry datatype, converting the value to null", e);
return null;
}
}