0

WKBReader的文档说:

它还部分处理 PostGIS 使用的扩展 WKB 格式(通过读取 SRID 值)

但是当我传递一个在前 4 个字节中具有 SRID 的字节数组时,WKBReader我从WKBReader. 链接也遇到相同的问题,并在将字节流传递到WKBReader. 查看代码本身WKBReader

private Geometry readGeometry() throws IOException, ParseException {
        byte byteOrderWKB = this.dis.readByte();
        int byteOrder = byteOrderWKB == 1?2:1;
        this.dis.setOrder(byteOrder);
        int typeInt = this.dis.readInt();
        int geometryType = typeInt & 255;
        boolean hasZ = (typeInt & -2147483648) != 0;
        this.inputDimension = hasZ?3:2;
        this.hasSRID = (typeInt & 536870912) != 0;
        int SRID = 0;
        if(this.hasSRID) {
            SRID = this.dis.readInt();
        }

它看起来不正确,因为它没有将前 4 个字节解码为 SRID。我还尝试了以下操作:

g = some JTS Geometry
g.setSRID(4326);
new WKBReader().read(new WKBWriter().write(g)).getSRID()

返回0而不是预期4326。我的问题是 JTS 的任何人都可以确认这确实是一个错误吗?如果没有,有什么问题?把它修好就好了。

4

1 回答 1

0

回答我自己的问题:这不是错误。WKBReader支持WKBWriter's 格式的 SRID。

new WKBReader().read(new WKBWriter(2, true).write(g)).getSRID();

返回预期的答案。此方法签名在官方文档中不存在,但在此处存在。

于 2015-12-04T00:47:03.433 回答