public class GDALParser extends AbstractParser
gdalinfo
tool used to extract geospatial
information out of hundreds of geo file formats.
The parser requires the installation of GDAL and for gdalinfo
to
be located on the path.
Basic information (Size, Coordinate System, Bounding Box, Driver, and
resource info) are extracted as metadata, and the remaining metadata patterns
are extracted and added.
The output of the command is available from the provided
ContentHandler
in the
parse(InputStream, ContentHandler, Metadata, ParseContext)
method.Modifier and Type | Field and Description |
---|---|
private java.lang.String |
command |
private static long |
serialVersionUID |
Constructor and Description |
---|
GDALParser() |
Modifier and Type | Method and Description |
---|---|
private void |
addBoundingBoxPattern(java.lang.String name,
java.util.Map<java.util.regex.Pattern,java.lang.String> patterns) |
private void |
addPatternWithColon(java.lang.String name,
java.util.Map<java.util.regex.Pattern,java.lang.String> patterns) |
private void |
addPatternWithIs(java.lang.String name,
java.util.Map<java.util.regex.Pattern,java.lang.String> patterns) |
private void |
applyPatternsToOutput(java.lang.String output,
Metadata metadata,
java.util.Map<java.util.regex.Pattern,java.lang.String> metadataPatterns) |
private java.lang.String |
execCommand(java.lang.String[] cmd) |
private void |
extractMetFromOutput(java.lang.String output,
Metadata met) |
private java.lang.String |
extractOutput(java.io.InputStream stream) |
java.lang.String |
getCommand() |
private java.util.Map<java.util.regex.Pattern,java.lang.String> |
getPatterns() |
java.util.Set<MediaType> |
getSupportedTypes(ParseContext context)
Returns the set of media types supported by this parser when used
with the given parse context.
|
private boolean |
hasHeadings(java.lang.String line,
java.lang.String[] headings) |
void |
parse(java.io.InputStream stream,
org.xml.sax.ContentHandler handler,
Metadata metadata,
ParseContext context)
Parses a document stream into a sequence of XHTML SAX events.
|
java.lang.String |
processCommand(java.io.InputStream stream) |
private void |
processOutput(org.xml.sax.ContentHandler handler,
Metadata metadata,
java.lang.String output) |
void |
setCommand(java.lang.String command) |
parse
private static final long serialVersionUID
private java.lang.String command
public void setCommand(java.lang.String command)
public java.lang.String getCommand()
public java.lang.String processCommand(java.io.InputStream stream)
public java.util.Set<MediaType> getSupportedTypes(ParseContext context)
Parser
context
- parse contextpublic void parse(java.io.InputStream stream, org.xml.sax.ContentHandler handler, Metadata metadata, ParseContext context) throws java.io.IOException, org.xml.sax.SAXException, TikaException
Parser
The given document stream is consumed but not closed by this method. The responsibility to close the stream remains on the caller.
Information about the parsing context can be passed in the context parameter. See the parser implementations for the kinds of context information they expect.
stream
- the document stream (input)handler
- handler for the XHTML SAX events (output)metadata
- document metadata (input and output)context
- parse contextjava.io.IOException
- if the document stream could not be readorg.xml.sax.SAXException
- if the SAX events could not be processedTikaException
- if the document could not be parsedprivate java.util.Map<java.util.regex.Pattern,java.lang.String> getPatterns()
private void addPatternWithColon(java.lang.String name, java.util.Map<java.util.regex.Pattern,java.lang.String> patterns)
private void addPatternWithIs(java.lang.String name, java.util.Map<java.util.regex.Pattern,java.lang.String> patterns)
private void addBoundingBoxPattern(java.lang.String name, java.util.Map<java.util.regex.Pattern,java.lang.String> patterns)
private void extractMetFromOutput(java.lang.String output, Metadata met)
private boolean hasHeadings(java.lang.String line, java.lang.String[] headings)
private void applyPatternsToOutput(java.lang.String output, Metadata metadata, java.util.Map<java.util.regex.Pattern,java.lang.String> metadataPatterns)
private java.lang.String execCommand(java.lang.String[] cmd) throws java.io.IOException
java.io.IOException
private java.lang.String extractOutput(java.io.InputStream stream) throws org.xml.sax.SAXException, java.io.IOException
org.xml.sax.SAXException
java.io.IOException
private void processOutput(org.xml.sax.ContentHandler handler, Metadata metadata, java.lang.String output) throws org.xml.sax.SAXException, java.io.IOException
org.xml.sax.SAXException
java.io.IOException