return geometryFactory.createMultiPoint(cs);
}
public void write(ByteBuffer buffer, Object geometry) {
MultiPoint mp = (MultiPoint) geometry;
Envelope box = mp.getEnvelopeInternal();
buffer.putDouble(box.getMinX());
buffer.putDouble(box.getMinY());
buffer.putDouble(box.getMaxX());
buffer.putDouble(box.getMaxY());
buffer.putInt(mp.getNumGeometries());
for (int t = 0, tt = mp.getNumGeometries(); t < tt; t++) {
Coordinate c = (mp.getGeometryN(t)).getCoordinate();
buffer.putDouble(c.x);
buffer.putDouble(c.y);
}
if (shapeType == ShapeType.MULTIPOINTZ) {
double[] zExtreame = JTSUtilities.zMinMax(mp.getCoordinates());
if (Double.isNaN(zExtreame[0])) {
buffer.putDouble(0.0);
buffer.putDouble(0.0);
} else {
buffer.putDouble(zExtreame[0]);
buffer.putDouble(zExtreame[1]);
}
for (int t = 0; t < mp.getNumGeometries(); t++) {
Coordinate c = (mp.getGeometryN(t)).getCoordinate();
double z = c.z;
if (Double.isNaN(z)) {
buffer.putDouble(0.0);
} else {
buffer.putDouble(z);
}
}
}
if (shapeType == ShapeType.MULTIPOINTM
|| shapeType == ShapeType.MULTIPOINTZ) {
buffer.putDouble(-10E40);
buffer.putDouble(-10E40);
for (int t = 0; t < mp.getNumGeometries(); t++) {
buffer.putDouble(-10E40);
}
}
}