Mercurial > mxd2map
diff src/java/de/intevation/mxd/writer/MapScriptWriter.java @ 340:dbfcb0b69a63
* contrib/installer/example/example/template.map: Switch to latin1 encoding
* contrib/installer/example/example/mapfile_header.include: Remove shapepath,
data is now referenced relative to the mapfile
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Fri, 09 Nov 2012 16:54:16 +0100 |
parents | ef1cac2854e3 |
children |
line wrap: on
line diff
--- a/src/java/de/intevation/mxd/writer/MapScriptWriter.java Thu Nov 08 12:46:16 2012 +0100 +++ b/src/java/de/intevation/mxd/writer/MapScriptWriter.java Fri Nov 09 16:54:16 2012 +0100 @@ -119,6 +119,7 @@ String fontSet = fonts.getAbsolutePath(); fontSet = fontSet.replaceAll("\\\\", "/"); map.setFontSet(fontSet); + } /** @@ -278,8 +279,13 @@ "/mxd/map", XPathConstants.NODE); NodeList list = mapNode.getElementsByTagName("layer"); - for(int i = 0; i < list.getLength(); i++) { + for(int i = list.getLength() - 1; i >= 0; i--) { Element layerElement = (Element)list.item(i); + if (layerElement.getAttribute("type") == "annotation" && + layerElement.getElementsByTagName("feature").getLength() == 0) { + logger.debug("Ignoring empty annotation Layer."); + continue; + } layerObj layer = new layerObj(map); NodeList renderer = layerElement.getElementsByTagName("renderer"); @@ -858,15 +864,22 @@ private String createExpression(Element ce, int index, String prefixToRemove, boolean isShapeFile) { String expression = "("; - int count = 0; + int field_count = 0; + int value_count = 0; try { - count = Integer.parseInt(ce.getAttribute("field_count")); + field_count = Integer.parseInt(ce.getAttribute("field_count")); } catch(NumberFormatException nfe) { return ""; } + try { + value_count = Integer.parseInt(ce.getAttribute("value_count")); + } + catch(NumberFormatException nfe) { + value_count = field_count; + } - if(count == 1) { + if(field_count == 1) { //Create single field expression. try { //If no exception is thrown, the expression value is a number. @@ -903,18 +916,19 @@ } else { //Create a multi field expression. - for (int i = 0; i < count; i++) { + for (int i = 0; i < field_count; i++) { try { //If no exception is thrown, the expression values are //numbers. + Double.parseDouble(ce.getAttribute("value_" + i)); expression += "["; expression += sanitizeAttribute(ce.getAttribute("expression_field_" + i), - prefixToRemove, prefix, isShapeFile); + prefixToRemove, prefix, isShapeFile); expression += "]"; expression += " " + ce.getAttribute("expression_operator"); expression += " " + ce.getAttribute("value_" + i); - if (i < count - 1) { + if (i < field_count - 1) { expression += " AND "; } else { @@ -925,11 +939,11 @@ //The expression values are strings. expression += "\"["; expression += sanitizeAttribute(ce.getAttribute("expression_field_" + i), - prefixToRemove, prefix, isShapeFile); + prefixToRemove, prefix, isShapeFile); expression += "]\""; expression += " " + ce.getAttribute("expression_operator"); expression += " \"" + ce.getAttribute("value_" + i); - if (i < count - 1) { + if (i < field_count - 1) { expression += "\" AND "; } else { @@ -937,6 +951,7 @@ } } } + } return expression; }