/**
  * Get the envelope flag indicator
  *
  * <p>1 for xy, 2 for xyz, 3 for xym, 4 for xyzm (null would be 0)
  *
  * @return
  */
 public static int getIndicator(GeometryEnvelope envelope) {
   int indicator = 1;
   if (envelope.hasZ()) {
     indicator++;
   }
   if (envelope.hasM()) {
     indicator += 2;
   }
   return indicator;
 }
  /**
   * Write the envelope bytes
   *
   * @param writer
   * @throws IOException
   */
  private void writeEnvelope(ByteWriter writer) throws IOException {

    if (envelope != null) {

      // Write x and y values
      writer.writeDouble(envelope.getMinX());
      writer.writeDouble(envelope.getMaxX());
      writer.writeDouble(envelope.getMinY());
      writer.writeDouble(envelope.getMaxY());

      // Write z values
      if (envelope.hasZ()) {
        writer.writeDouble(envelope.getMinZ());
        writer.writeDouble(envelope.getMaxZ());
      }

      // Write m values
      if (envelope.hasM()) {
        writer.writeDouble(envelope.getMinM());
        writer.writeDouble(envelope.getMaxM());
      }
    }
  }