Changeset 33003 in osm for applications/editors/josm/plugins/poly/src/poly/PolyExporter.java
- Timestamp:
- 2016-09-23T21:54:09+02:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/poly/src/poly/PolyExporter.java
r30738 r33003 1 // License: GPL. For details, see LICENSE file. 1 2 package poly; 2 3 … … 35 36 36 37 @Override 37 public void exportData( File file, Layer layer) throws IOException {38 if (layer instanceof OsmDataLayer) {38 public void exportData(File file, Layer layer) throws IOException { 39 if (layer instanceof OsmDataLayer) { 39 40 try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF8"))) { 40 DataSet ds = ((OsmDataLayer)layer).data; 41 DataSet ds = ((OsmDataLayer) layer).data; 41 42 Map<Way, Boolean> ways = new TreeMap<>(); 42 43 String polygonName = file.getName(); 43 if (polygonName.indexOf('.') > 0)44 if (polygonName.indexOf('.') > 0) 44 45 polygonName = polygonName.substring(0, polygonName.indexOf('.')); 45 for (Way w : ds.getWays()) {46 if (w.isClosed()) {46 for (Way w : ds.getWays()) { 47 if (w.isClosed()) { 47 48 boolean outer = isOuter(w); 48 49 ways.put(w, outer); 49 if (w.hasKey("name"))50 if (w.hasKey("name")) 50 51 polygonName = w.get("name").replace("\n", " "); 51 52 } … … 56 57 writer.write(polygonName); 57 58 writer.newLine(); 58 for (Way w : ways.keySet()) {59 if (!ways.get(w))59 for (Way w : ways.keySet()) { 60 if (!ways.get(w)) 60 61 writer.write('!'); 61 62 writer.write(String.valueOf(counter++)); 62 63 writer.newLine(); 63 for (Node n : w.getNodes()) {64 for (Node n : w.getNodes()) { 64 65 writer.write(String.format(Locale.ENGLISH, " %f %f", n.getCoor().lon(), n.getCoor().lat())); 65 66 writer.newLine(); … … 74 75 } 75 76 76 private boolean isOuter( Way w) {77 for (OsmPrimitive p : w.getReferrers()) {78 if (p instanceof Relation && ((Relation)p).isMultipolygon()) {79 for (RelationMember m : ((Relation)p).getMembers()) {80 if (m.refersTo(w) && "inner".equals(m.getRole())) {77 private boolean isOuter(Way w) { 78 for (OsmPrimitive p : w.getReferrers()) { 79 if (p instanceof Relation && ((Relation) p).isMultipolygon()) { 80 for (RelationMember m : ((Relation) p).getMembers()) { 81 if (m.refersTo(w) && "inner".equals(m.getRole())) { 81 82 return false; 82 83 } … … 87 88 } 88 89 89 private Map<Way, Boolean> sortOuterInner( Map<Way, Boolean> ways) {90 private Map<Way, Boolean> sortOuterInner(Map<Way, Boolean> ways) { 90 91 LinkedHashMap<Way, Boolean> result = new LinkedHashMap<>(ways.size()); 91 92 List<Way> inner = new ArrayList<>(); 92 for (Way w : ways.keySet()) {93 for (Way w : ways.keySet()) { 93 94 Boolean outer = ways.get(w); 94 if ( outer)95 if (outer) 95 96 result.put(w, outer); 96 97 else 97 98 inner.add(w); 98 99 } 99 for (Way w : inner)100 for (Way w : inner) { 100 101 result.put(w, Boolean.FALSE); 102 } 101 103 return result; 102 104 }
Note:
See TracChangeset
for help on using the changeset viewer.
