代码中用sparksql将数据存储了,geomtry的值已经转换为了16进制字符串
geometry处理为WKB字符的代码:
if (fldName.equalsIgnoreCase(Const.pg_field_geomtry)) {
WKBWriter write = new WKBWriter();
byte[] geoByte = write.write(feature.getGeometry());
String string = WKBWriter.toHex(geoByte);
objectList.set(i, string);
break;
}
存储相关的代码:Dataset<Row> df 作为传入参数。
df.select("*").write().mode(SaveMode.Overwrite).jdbc(dcInfo.url, tableName, dcInfo.properties);
这样存储的表geometry是文本型,在QGIS中看不到。需要改字段类型,使用以下语句:
navi cat工具中,使用语句:
Alter TABLE table_name alter column field_name TYPE geometry USING field_name ::geometry
代码中,创建带geometry字段的表,或者修改字段类型为geometry,需要用public.geometry,否则会报异常。