Index: trunk/scripts/SyncEditorLayerIndex.java
===================================================================
--- trunk/scripts/SyncEditorLayerIndex.java	(revision 16650)
+++ trunk/scripts/SyncEditorLayerIndex.java	(revision 16740)
@@ -1346,4 +1346,20 @@
     }
 
+    static void addJsonShapes(List<Shape> l, JsonArray a) {
+        if (a.get(0).asJsonArray().get(0) instanceof JsonArray) {
+            for (JsonValue sub: a.asJsonArray()) {
+                addJsonShapes(l, sub.asJsonArray());
+            }
+        } else {
+            Shape s = new Shape();
+            for (JsonValue point: a.asJsonArray()) {
+                JsonArray ar = point.asJsonArray();
+                String lon = ar.getJsonNumber(0).toString();
+                String lat = ar.getJsonNumber(1).toString();
+                s.addPoint(lat, lon);
+            }
+            l.add(s);
+        }
+    }
     static List<Shape> getShapes(Object e) {
         if (e instanceof ImageryInfo) {
@@ -1359,11 +1375,5 @@
             List<Shape> l = new ArrayList<>();
             for (JsonValue shapes: poly) {
-                Shape s = new Shape();
-                for (JsonValue point: shapes.asJsonArray()) {
-                    String lon = point.asJsonArray().getJsonNumber(0).toString();
-                    String lat = point.asJsonArray().getJsonNumber(1).toString();
-                    s.addPoint(lat, lon);
-                }
-                l.add(s);
+                addJsonShapes(l, shapes.asJsonArray());
             }
             return l;
