/** * Read the envelope based upon the indicator value * * @param envelopeIndicator * @param reader * @return */ private GeometryEnvelope readEnvelope(int envelopeIndicator, ByteReader reader) { GeometryEnvelope envelope = null; if (envelopeIndicator > 0) { // Read x and y values and create envelope double minX = reader.readDouble(); double maxX = reader.readDouble(); double minY = reader.readDouble(); double maxY = reader.readDouble(); boolean hasZ = false; Double minZ = null; Double maxZ = null; boolean hasM = false; Double minM = null; Double maxM = null; // Read z values if (envelopeIndicator == 2 || envelopeIndicator == 4) { hasZ = true; minZ = reader.readDouble(); maxZ = reader.readDouble(); } // Read m values if (envelopeIndicator == 3 || envelopeIndicator == 4) { hasM = true; minM = reader.readDouble(); maxM = reader.readDouble(); } envelope = new GeometryEnvelope(hasZ, hasM); envelope.setMinX(minX); envelope.setMaxX(maxX); envelope.setMinY(minY); envelope.setMaxY(maxY); if (hasZ) { envelope.setMinZ(minZ); envelope.setMaxZ(maxZ); } if (hasM) { envelope.setMinM(minM); envelope.setMaxM(maxM); } } return envelope; }