提交 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 { ...@@ -249,10 +249,19 @@ public final class EWKTUtils {
} }
int readSRID() { int readSRID() {
skipWS();
int srid; int srid;
if (ewkt.startsWith("SRID=")) { if (ewkt.regionMatches(true, offset, "SRID=", 0, 5)) {
offset += 5;
int idx = ewkt.indexOf(';', 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; offset = idx + 1;
} else { } else {
srid = 0; srid = 0;
......
...@@ -381,6 +381,7 @@ public class TestGeometryUtils extends TestBase { ...@@ -381,6 +381,7 @@ public class TestGeometryUtils extends TestBase {
assertEquals(10, gc.getSRID()); assertEquals(10, gc.getSRID());
assertEquals(10, gc.getGeometryN(0).getSRID()); assertEquals(10, gc.getGeometryN(0).getSRID());
assertEquals(ewkb, JTSUtils.geometry2ewkb(gc)); 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) { private void testDimensions(int expected, byte[] ewkb) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论