Changeset 15777 in josm
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDataText.java
r15716 r15777 5 5 import static org.openstreetmap.josm.tools.I18n.trn; 6 6 7 import java.util.Arrays; 7 8 import java.util.List; 9 import java.util.stream.Collectors; 10 import java.util.stream.Stream; 8 11 9 12 import org.openstreetmap.josm.data.conflict.Conflict; 10 import org.openstreetmap.josm.data.coor.EastNorth;11 13 import org.openstreetmap.josm.data.coor.ILatLon; 14 import org.openstreetmap.josm.data.coor.LatLon; 15 import org.openstreetmap.josm.data.coor.conversion.AbstractCoordinateFormat; 12 16 import org.openstreetmap.josm.data.coor.conversion.DecimalDegreesCoordinateFormat; 17 import org.openstreetmap.josm.data.coor.conversion.ProjectedCoordinateFormat; 13 18 import org.openstreetmap.josm.data.osm.BBox; 14 19 import org.openstreetmap.josm.data.osm.DataSet; … … 168 173 } else if (o instanceof IWay) { 169 174 addBbox(o); 170 add(tr("Centroid: "), 171 toStringCSV(", ", ProjectionRegistry.getProjection().eastNorth2latlon( 172 Geometry.getCentroid(((IWay<?>) o).getNodes())))); 175 add(tr("Centroid: "), toStringCSV(false, 176 ProjectionRegistry.getProjection().eastNorth2latlon(Geometry.getCentroid(((IWay<?>) o).getNodes())))); 173 177 addWayNodes((IWay<?>) o); 174 178 } else if (o instanceof IRelation) { … … 200 204 BBox bbox = o.getBBox(); 201 205 if (bbox != null) { 202 add(tr("Bounding box: "), bbox.toStringCSV(", ")); 203 EastNorth bottomRigth = bbox.getBottomRight().getEastNorth(ProjectionRegistry.getProjection()); 204 EastNorth topLeft = bbox.getTopLeft().getEastNorth(ProjectionRegistry.getProjection()); 205 add(tr("Bounding box (projected): "), 206 Double.toString(topLeft.east()), ", ", 207 Double.toString(bottomRigth.north()), ", ", 208 Double.toString(bottomRigth.east()), ", ", 209 Double.toString(topLeft.north())); 210 add(tr("Center of bounding box: "), toStringCSV(", ", bbox.getCenter())); 206 final LatLon bottomRight = bbox.getBottomRight(); 207 final LatLon topLeft = bbox.getTopLeft(); 208 add(tr("Bounding box: "), toStringCSV(false, bottomRight, topLeft)); 209 add(tr("Bounding box (projected): "), toStringCSV(true, bottomRight, topLeft)); 210 add(tr("Center of bounding box: "), toStringCSV(false, bbox.getCenter())); 211 211 } 212 212 } … … 214 214 void addCoordinates(INode n) { 215 215 if (n.isLatLonKnown()) { 216 add(tr("Coordinates:"), " ", 217 Double.toString(n.lat()), ", ", 218 Double.toString(n.lon())); 219 EastNorth en = n.getEastNorth(); 220 add(tr("Coordinates (projected): "), 221 Double.toString(en.east()), ", ", 222 Double.toString(en.north())); 216 add(tr("Coordinates:"), " ", toStringCSV(false, n)); 217 add(tr("Coordinates (projected): "), toStringCSV(true, n)); 223 218 Pair<Integer, Hemisphere> utmZone = TransverseMercator.locateUtmZone(n.getCoor()); 224 219 String utmLabel = tr("UTM Zone"); … … 248 243 249 244 /** 250 * Returns lat/loncoordinate in human-readable formatseparated by {@code separator}.251 * @param separator values separator252 * @param ll the lat/lon253 * @return String in the format {@code "1.23456 [separator]2.34567"}245 * Returns the coordinates in human-readable format. 246 * @param projected whether to use projected coordinates 247 * @param coordinates the coordinates to format 248 * @return String in the format {@code "1.23456, 2.34567"} 254 249 */ 255 private static String toStringCSV(String separator, ILatLon ll) { 256 return String.join(separator, 257 DecimalDegreesCoordinateFormat.INSTANCE.latToString(ll), 258 DecimalDegreesCoordinateFormat.INSTANCE.lonToString(ll) 259 ); 250 private static String toStringCSV(boolean projected, ILatLon... coordinates) { 251 final AbstractCoordinateFormat format = projected 252 ? ProjectedCoordinateFormat.INSTANCE 253 : DecimalDegreesCoordinateFormat.INSTANCE; 254 return Arrays.stream(coordinates) 255 .flatMap(ll -> Stream.of(format.latToString(ll), format.lonToString(ll))) 256 .collect(Collectors.joining(", ")); 260 257 } 261 258 -
trunk/test/unit/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialogTest.java
r14138 r15777 15 15 import org.openstreetmap.josm.data.osm.Node; 16 16 import org.openstreetmap.josm.data.osm.User; 17 import org.openstreetmap.josm.data.osm.Way; 17 18 import org.openstreetmap.josm.gui.MainApplication; 18 19 import org.openstreetmap.josm.gui.layer.OsmDataLayer; … … 48 49 DataSet ds = new DataSet(); 49 50 assertEquals("", InspectPrimitiveDialog.buildDataText(ds, new ArrayList<>(ds.allPrimitives()))); 50 Node n = new Node(LatLon.ZERO); 51 n.setOsmId(1, 1); 52 ds.addPrimitive(n); 51 final Way way = new Way(); 52 way.addNode(new Node(new LatLon(47.2687921, 11.390525))); 53 way.addNode(new Node(new LatLon(47.2689194, 11.3907301))); 54 way.addNode(new Node(new LatLon(47.2684158, 11.3914047))); 55 way.addNode(new Node(new LatLon(47.2682898, 11.3912034))); 56 way.setOsmId(1, 1); 57 int id = 2; 58 for (Node node : way.getNodes()) { 59 node.setOsmId(id, id); 60 id++; 61 } 62 way.getNodes().forEach(ds::addPrimitive); 63 ds.addPrimitive(way); 64 way.addNode(way.firstNode()); // close way 53 65 assertEquals( 54 "Node: 1\n" +66 "Way: 1\n" + 55 67 " Data Set: "+Integer.toHexString(ds.hashCode())+"\n" + 56 68 " Edited at: <new object>\n" + … … 58 70 " Version: 1\n" + 59 71 " In changeset: 0\n" + 60 " Coordinates: 0.0, 0.0\n" + 61 " Coordinates (projected): 0.0, -7.081154551613622E-10\n" + 62 " UTM Zone: 31S\n" + 63 "\n", InspectPrimitiveDialog.buildDataText(ds, new ArrayList<>(ds.allPrimitives()))); 72 " Bounding box: 47.2682898, 11.3914047, 47.2689194, 11.390525\n" + 73 " Bounding box (projected): 5985976.274977, 1268085.3706241, 5986079.5621105, 1267987.4428681\n" + 74 " Center of bounding box: 47.2686046, 11.3909648\n" + 75 " Centroid: 47.2686049, 11.3909649\n" + 76 " 5 Nodes: \n" + 77 " 2\n" + 78 " 3\n" + 79 " 4\n" + 80 " 5\n" + 81 " 2\n" + 82 "\n", InspectPrimitiveDialog.buildDataText(ds, new ArrayList<>(ds.getWays()))); 64 83 } 65 84
Note:
See TracChangeset
for help on using the changeset viewer.