private void extractEnvelope(XMLEventReader xrd) throws XMLStreamException {
        XMLEvent xev = xrd.nextTag();
        if (xev.isStartElement() && xev.asStartElement().getName().getLocalPart().toLowerCase().contains("lower")) {
            // skip attributes,comments and whitespace
            do {
                xev = xrd.nextEvent();
            } while (xrd.hasNext() && !xev.isCharacters());
            // extract lower corner coords
            StringBuilder corners = new StringBuilder(xev.asCharacters().getData());
            // skip to upper corner
            xev = xrd.nextTag();
            xev = xrd.nextTag();
            if (xev.isStartElement() && xev.asStartElement().getName().getLocalPart().toLowerCase().contains("upper")) {
                // skip attributes,comments and whitespace
                do {
                    xev = xrd.nextEvent();
                } while (xrd.hasNext() && !xev.isCharacters());
                // extract upper corner coords
                corners.append(' ').append(xev.asCharacters().getData());
            }
            // store corners coords
            ArrayList<String> cornerCoords = shapeCoordString.get(Shapes.ENVELOPE);
            // see if there are similar shapes
            if (cornerCoords == null) {
                // no similar shape create list of coords
                cornerCoords = new ArrayList<>();
                shapeCoordString.put(Shapes.ENVELOPE, cornerCoords);
            }
            // add coords to list of shape
            cornerCoords.add(corners.toString());
        }
    }