Skip to content

Commit 1571672

Browse files
committed
add support for multipoint geometries
1 parent 0438d3c commit 1571672

2 files changed

Lines changed: 34 additions & 3 deletions

File tree

src/com/esri/core/geometry/OperatorExportToGeoJsonCursor.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,33 @@ private void exportMultiPointToGeoJson(JsonGenerator g, MultiPoint mp) throws Js
120120
g.writeString("MultiPoint");
121121

122122
g.writeFieldName("coordinates");
123+
g.writeStartArray();
123124

124-
if (mp.isEmpty()) {
125-
g.writeStartArray();
126-
g.writeEndArray();
125+
if (!mp.isEmpty()) {
126+
MultiPointImpl mpImpl = (MultiPointImpl) mp._getImpl();
127+
AttributeStreamOfDbl zs = mp.hasAttribute(Semantics.Z) ? (AttributeStreamOfDbl) mpImpl.getAttributeStreamRef(Semantics.Z) : null;
128+
129+
Point2D p = new Point2D();
130+
131+
int n = mp.getPointCount();
132+
133+
for(int i = 0; i < n; i++) {
134+
mp.getXY(i, p);
135+
136+
g.writeStartArray();
137+
138+
writeDouble(p.x, g);
139+
writeDouble(p.y, g);
140+
141+
if (zs != null)
142+
writeDouble(zs.get(i), g);
143+
144+
g.writeEndArray();
145+
}
127146
}
128147

148+
g.writeEndArray();
149+
129150
g.writeEndObject();
130151
g.close();
131152
}

unittest/com/esri/core/geometry/TestGeomToGeoJson.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,16 @@ public void testEmptyPoint() {
3232
assertEquals("{\"type\":\"Point\",\"coordinates\":[]}", result);
3333
}
3434

35+
@Test
36+
public void testMultiPoint() {
37+
MultiPoint mp = new MultiPoint();
38+
mp.add(10.0, 20.0);
39+
mp.add(20.0, 30.0);
40+
OperatorExportToGeoJson exporter = (OperatorExportToGeoJson) factory.getOperator(Operator.Type.ExportToGeoJson);
41+
String result = exporter.execute(mp);
42+
assertEquals("{\"type\":\"MultiPoint\",\"coordinates\":[[10.0,20.0],[20.0,30.0]]}", result);
43+
}
44+
3545
@Test
3646
public void testEmptyMultiPoint() {
3747
MultiPoint mp = new MultiPoint();

0 commit comments

Comments
 (0)