Skip to content

Commit b1ed0ea

Browse files
authored
GML: add option for srsDimension (#419)
1 parent 80d903d commit b1ed0ea

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

xtraplatform-features-gml/src/main/java/de/ii/xtraplatform/features/gml/domain/GeometryEncoderGml.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ public class GeometryEncoderGml implements GeometryVisitor<Void> {
119119
public enum Options {
120120
WITH_GML_ID,
121121
WITH_SRS_NAME,
122+
WITH_SRS_DIMENSION,
122123
LINE_STRING_AS_SEGMENT,
123124
POLYGON_AS_PATCH
124125
}
@@ -255,6 +256,10 @@ private void writeStartTagProperty(String tagName) {
255256
writeStartTag(tagName, Map.of(), false, true);
256257
}
257258

259+
private void writeStartTagProperty(String tagName, Map<String, String> attributes) {
260+
writeStartTag(tagName, attributes, false, true);
261+
}
262+
258263
private void writeStartTag(
259264
String tagName, Map<String, String> attributes, boolean isObject, boolean suppressSrsName) {
260265
write(OPEN);
@@ -311,13 +316,29 @@ private void writeCoordinates(double[] coordinates, Axes axes) {
311316
}
312317

313318
private void writePosition(double[] coordinates, Axes axes) {
314-
writeStartTagProperty(version != GmlVersion.GML21 ? POS : COORDINATES);
319+
if (version != GmlVersion.GML21) {
320+
if (options.contains(Options.WITH_SRS_DIMENSION)) {
321+
writeStartTagProperty(POS, Map.of("srsDimension", String.valueOf(axes.size())));
322+
} else {
323+
writeStartTagProperty(POS);
324+
}
325+
} else {
326+
writeStartTagProperty(COORDINATES);
327+
}
315328
writeCoordinates(coordinates, axes);
316329
writeEndTag(version != GmlVersion.GML21 ? POS : COORDINATES);
317330
}
318331

319332
private void writePositionList(double[] coordinates, Axes axes) {
320-
writeStartTagProperty(version != GmlVersion.GML21 ? POS_LIST : COORDINATES);
333+
if (version != GmlVersion.GML21) {
334+
if (options.contains(Options.WITH_SRS_DIMENSION)) {
335+
writeStartTagProperty(POS_LIST, Map.of("srsDimension", String.valueOf(axes.size())));
336+
} else {
337+
writeStartTagProperty(POS_LIST);
338+
}
339+
} else {
340+
writeStartTagProperty(COORDINATES);
341+
}
321342
writeCoordinates(coordinates, axes);
322343
writeEndTag(version != GmlVersion.GML21 ? POS_LIST : COORDINATES);
323344
}

0 commit comments

Comments
 (0)