@@ -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