不要用jts直接用java解析
时间: 2024-02-25 19:53:45 浏览: 83
shp文件解析java实现
5星 · 资源好评率100%
MySQL中的Geometry数据类型通常存储的是WKB格式的二进制数据。要在Java中解析MySQL中的Geometry数据类型,可以使用Java自带的ByteBuffer和BitSet类,具体步骤如下:
1. 从数据库中读取Geometry数据,并将存储的二进制数据转换为byte数组,示例代码如下:
```java
ResultSet rs = stmt.executeQuery("SELECT geom FROM mytable WHERE id=1");
byte[] wkb = rs.getBytes("geom");
```
2. 使用ByteBuffer类读取byte数组中的数据,并解析出Geometry类型和坐标信息,示例代码如下:
```java
ByteBuffer buffer = ByteBuffer.wrap(wkb);
// 设置字节顺序为大端模式
buffer.order(ByteOrder.BIG_ENDIAN);
// 读取Geometry类型
int type = buffer.getInt();
// 读取坐标点数量
int numPoints = buffer.getInt() / 2;
// 读取坐标信息
double[] coords = new double[numPoints * 2];
for (int i = 0; i < numPoints * 2; i++) {
coords[i] = buffer.getDouble();
}
```
3. 将坐标信息转换成点的坐标,示例代码如下:
```java
Point[] points = new Point[numPoints];
for (int i = 0; i < numPoints; i++) {
double x = coords[i * 2];
double y = coords[i * 2 + 1];
points[i] = new Point(x, y);
}
```
其中,Point类表示一个点的坐标,代码如下:
```java
public class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public double getX() {
return x;
}
public double getY() {
return y;
}
}
```
通过以上步骤,就可以在Java中解析MySQL中的Geometry数据类型了。需要注意的是,这种方式只能解析出点的坐标,如果需要解析出其他Geometry类型的信息,可以参考MySQL的官方文档中关于WKB格式的说明。
阅读全文