Skip to content

Commit

Permalink
fix for TIKA-2770 conversion for UTM only
Browse files Browse the repository at this point in the history
  • Loading branch information
kristencheung authored and tballison committed Nov 14, 2018
1 parent f4c0b5a commit f136f97
Showing 1 changed file with 22 additions and 14 deletions.
Expand Up @@ -117,23 +117,20 @@ private void readLines(AutoDetectReader reader, Metadata metadata) throws IOExce
*/
private void writeParagraphAndSetMetadata(String line, Metadata metadata) throws SAXException {
if(line.length() < 300) {
String[] keyValue = line.split("=");
String[] keyValue = line.split("=", 2);
if(keyValue.length != 1) {
if (keyValue[0].trim().equals("map info")) {
StringBuilder mapInfoValueStringBuilder = new StringBuilder();
String mapInfoValue = keyValue[1];
for (int i = 0; i < keyValue[1].length(); ++i) {
if (mapInfoValue.charAt(i) != '{' || mapInfoValue.charAt(i) != '}' || mapInfoValue.charAt(i) != ' ') {
mapInfoValueStringBuilder.append(mapInfoValue.charAt(i));
}
String[] mapInfoValues = parseMapInfoContents(keyValue[1]);
if (mapInfoValues[0].equals("UTM")) {
metadata.set("envi." + keyValue[0].trim().replace(" ", "."), keyValue[1].trim());
String [] latLonStringArray = convertMapInfoValuesToLatLngAndSetMetadata(mapInfoValues, metadata);
String xhtmlLatLongLine = "lat/lon = { " + latLonStringArray[0] + ", " + latLonStringArray[1] + " }";
xhtml.startElement("p");
xhtml.characters(xhtmlLatLongLine);
xhtml.endElement("p");
} else {
metadata.set("envi." + keyValue[0].trim().replace(" ", "."), keyValue[1].trim());
}
String[] mapInfoValues = mapInfoValueStringBuilder.toString().split(",");
metadata.set("envi." + keyValue[0].trim().replace(" ", "."), keyValue[1].trim());
String [] latLonStringArray = convertMapInfoValuesToLatLngAndSetMetadata(mapInfoValues, metadata);
String xhtmlLatLongLine = "lat/lon = { " + latLonStringArray[0] + ", " + latLonStringArray[1] + " }";
xhtml.startElement("p");
xhtml.characters(xhtmlLatLongLine);
xhtml.endElement("p");
} else {
metadata.set("envi." + keyValue[0].trim().replace(" ", "."), keyValue[1].trim());
}
Expand All @@ -144,6 +141,17 @@ private void writeParagraphAndSetMetadata(String line, Metadata metadata) throws
xhtml.endElement("p");
}

private String[] parseMapInfoContents(String mapInfoValue) {
StringBuilder mapInfoValueStringBuilder = new StringBuilder();
for (int i = 0; i < mapInfoValue.length(); ++i) {
if (mapInfoValue.charAt(i) != '{' && mapInfoValue.charAt(i) != '}' && mapInfoValue.charAt(i) != ' ') {
mapInfoValueStringBuilder.append(mapInfoValue.charAt(i));
}
}
String[] mapInfoValues = mapInfoValueStringBuilder.toString().split(",");
return mapInfoValues;
}

// Conversion logic taken from https://stackoverflow.com/questions/343865/how-to-convert-from-utm-to-latlng-in-python-or-javascript/344083#344083
private String [] convertMapInfoValuesToLatLngAndSetMetadata(String[] mapInfoValues, Metadata metadata) {
// Based on the map info data, pixelEasting is at index 3 and pixelNorthing is at index 4
Expand Down

0 comments on commit f136f97

Please sign in to comment.