大致流程
- 将Oracle中的sde.st_geometry类型使用sde.st_astext()函数查出;
- 将查询出的数据转为geojson;
- 导入至es中。
具体流程
- sql查询:
select sde.st_astext(SHAPE) from 表;
- 查询出的数据可以使用String接收,实际是WKT数据。转换geoJson方法:
2.1. 添加依赖
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-geojson</artifactId>
<version> 12.0 </version>
</dependency>
<!-- 以下三个包不是必须,我在项目中不加一下依赖会报错 -->
<dependency>
<groupId>com.vividsolutions</groupId>
<artifactId>jts</artifactId>
<version>1.13</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
2.2. 代码实现类型转换
WKTReader reader = new WKTReader();
Geometry geometry = reader.read(shape);
StringWriter writer = new StringWriter();
GeometryJSON g = new GeometryJSON(20); // 20为精度, 如果不设置默认是4
g.write(geometry, writer);
// 如果需要导入es,则需要下面一步
return JSONObject.parseObject(writer.toString());
2.3. 导入es
使用 BulkResponse 进行导入