提交 e5098b56 authored 作者: Evgenij Ryazanov's avatar Evgenij Ryazanov

Use less restrictive SRID parsing in EWKT for better compatibility

上级 685f01b6
......@@ -249,10 +249,19 @@ public final class EWKTUtils {
}
int readSRID() {
skipWS();
int srid;
if (ewkt.startsWith("SRID=")) {
if (ewkt.regionMatches(true, offset, "SRID=", 0, 5)) {
offset += 5;
int idx = ewkt.indexOf(';', 5);
srid = Integer.parseInt(ewkt.substring(5, idx));
if (idx < 0) {
throw new IllegalArgumentException();
}
int end = idx;
while (ewkt.charAt(end - 1) <= ' ') {
end--;
}
srid = Integer.parseInt(ewkt.substring(offset, end).trim());
offset = idx + 1;
} else {
srid = 0;
......
......@@ -381,6 +381,7 @@ public class TestGeometryUtils extends TestBase {
assertEquals(10, gc.getSRID());
assertEquals(10, gc.getGeometryN(0).getSRID());
assertEquals(ewkb, JTSUtils.geometry2ewkb(gc));
assertEquals("SRID=-1;POINT EMPTY", EWKTUtils.ewkb2ewkt(EWKTUtils.ewkt2ewkb(" srid=-1 ; POINT EMPTY ")));
}
private void testDimensions(int expected, byte[] ewkb) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论