Ticket #16102: kml.patch
| File kml.patch, 3.0 KB (added by , 8 years ago) |
|---|
-
src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/KmlReader.java
99 99 List<OsmPrimitive> list = new ArrayList<>(); 100 100 long when = 0; 101 101 Way way = null; 102 List<Node> wayNodes = null; 102 103 Node node = null; 103 104 Relation relation = null; 104 105 String role = ""; … … 130 131 } else if (parser.getLocalName().equals(KML_LINEAR_RING)) { 131 132 if (relation != null) { 132 133 ds.addPrimitive(way = new Way()); 134 wayNodes = new ArrayList<>(); 133 135 relation.addMember(new RelationMember(role, way)); 134 136 } 135 137 } else if (parser.getLocalName().equals(KML_LINE_STRING) || parser.getLocalName().equals(KML_EXT_TRACK)) { … … 138 140 } else if (parser.getLocalName().equals(KML_COORDINATES)) { 139 141 String[] tab = parser.getElementText().trim().split("\\s"); 140 142 for (int i = 0; i < tab.length; i++) { 141 node = parseNode(ds, way , node, tab[i].split(","));143 node = parseNode(ds, wayNodes, node, tab[i].split(",")); 142 144 } 143 145 } else if (parser.getLocalName().equals(KML_EXT_COORD)) { 144 node = parseNode(ds, way , node, parser.getElementText().trim().split("\\s"));146 node = parseNode(ds, wayNodes, node, parser.getElementText().trim().split("\\s")); 145 147 if (node != null && when > 0) { 146 148 node.setRawTimestamp((int) when); 147 149 } … … 153 155 break; 154 156 } else if (parser.getLocalName().equals(KML_POINT)) { 155 157 list.add(node); 158 } else if (parser.getLocalName().equals(KML_COORDINATES)) { 159 if (way != null) 160 way.setNodes(wayNodes); 161 wayNodes = new ArrayList<>(); 156 162 } 157 163 } 158 164 } … … 163 169 } 164 170 } 165 171 166 private Node parseNode(DataSet ds, Way way, Node node, String[] values) {172 private Node parseNode(DataSet ds, List<Node> wayNodes, Node node, String[] values) { 167 173 if (values.length >= 2) { 168 174 LatLon ll = new LatLon(Double.valueOf(values[1]), Double.valueOf(values[0])).getRoundedToOsmPrecision(); 169 175 node = nodes.get(ll); … … 174 180 node.put("ele", values[2]); 175 181 } 176 182 } 177 if (way != null) {178 way .addNode(node);183 if (wayNodes != null) { 184 wayNodes.add(node); 179 185 } 180 186 } 181 187 return node;
