Ignore:
Timestamp:
2014-09-21T23:00:38+02:00 (10 years ago)
Author:
Don-vip
Message:

fix #7976 - Get downloaded gpx areas, on the same model as osm data

Location:
trunk/src/org/openstreetmap/josm/io
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java

    r7531 r7575  
    1010import org.openstreetmap.josm.Main;
    1111import org.openstreetmap.josm.data.Bounds;
     12import org.openstreetmap.josm.data.DataSource;
    1213import org.openstreetmap.josm.data.gpx.GpxData;
    1314import org.openstreetmap.josm.data.notes.Note;
     
    4546    }
    4647
    47     private GpxData downloadRawGps(String url, ProgressMonitor progressMonitor) throws IOException, OsmTransferException, SAXException {
     48    private GpxData downloadRawGps(Bounds b, ProgressMonitor progressMonitor) throws IOException, OsmTransferException, SAXException {
    4849        boolean done = false;
    4950        GpxData result = null;
     51        String url = "trackpoints?bbox="+b.getMinLon()+","+b.getMinLat()+","+b.getMaxLon()+","+b.getMaxLat()+"&page=";
    5052        for (int i = 0;!done;++i) {
    5153            progressMonitor.subTask(tr("Downloading points {0} to {1}...", i * 5000, ((i + 1) * 5000)));
     
    7072        if (result != null) {
    7173            result.fromServer = true;
     74            result.dataSources.add(new DataSource(b, "OpenStreetMap server"));
    7275        }
    7376        return result;
     
    8184            if (crosses180th) {
    8285                // API 0.6 does not support requests crossing the 180th meridian, so make two requests
    83                 GpxData result = downloadRawGps("trackpoints?bbox="+lon1+","+lat1+",180.0,"+lat2+"&page=", progressMonitor);
    84                 result.mergeFrom(downloadRawGps("trackpoints?bbox=-180.0,"+lat1+","+lon2+","+lat2+"&page=", progressMonitor));
     86                GpxData result = downloadRawGps(new Bounds(lat1, lon1, lat2, 180.0), progressMonitor);
     87                result.mergeFrom(downloadRawGps(new Bounds(lat1, -180.0, lat2, lon2), progressMonitor));
    8588                return result;
    8689            } else {
    8790                // Simple request
    88                 return downloadRawGps("trackpoints?bbox="+lon1+","+lat1+","+lon2+","+lat2+"&page=", progressMonitor);
     91                return downloadRawGps(new Bounds(lat1, lon1, lat2, lon2), progressMonitor);
    8992            }
    9093        } catch (IllegalArgumentException e) {
  • trunk/src/org/openstreetmap/josm/io/GpxReader.java

    r7518 r7575  
    2121
    2222import org.openstreetmap.josm.Main;
     23import org.openstreetmap.josm.data.Bounds;
    2324import org.openstreetmap.josm.data.coor.LatLon;
    2425import org.openstreetmap.josm.data.gpx.Extensions;
     
    3839 * Read a gpx file.
    3940 *
    40  * Bounds are not read, as we caluclate them. @see GpxData.recalculateBounds()
     41 * Bounds are read, even if we calculate them, see {@link GpxData#recalculateBounds}.<br>
    4142 * Both GPX version 1.0 and 1.1 are supported.
    4243 *
     
    7374        private boolean nokiaSportsTrackerBug = false;
    7475
    75         @Override public void startDocument() {
     76        @Override
     77        public void startDocument() {
    7678            accumulator = new StringBuffer();
    7779            states = new Stack<>();
     
    162164                    currentState = State.link;
    163165                    currentLink = new GpxLink(atts.getValue("href"));
     166                    break;
     167                case "bounds":
     168                    data.put(META_BOUNDS, new Bounds(
     169                                parseCoord(atts.getValue("minlat")),
     170                                parseCoord(atts.getValue("minlon")),
     171                                parseCoord(atts.getValue("maxlat")),
     172                                parseCoord(atts.getValue("maxlon"))));
    164173                }
    165174                break;
     
    312321                        break;
    313322                    }
     323                case "bounds":
     324                    // do nothing, has been parsed on startElement
     325                    break;
    314326                default:
    315                     //TODO: parse bounds, extensions
     327                    //TODO: parse extensions
    316328                }
    317329                break;
  • trunk/src/org/openstreetmap/josm/io/OsmReader.java

    r7299 r7575  
    2121import org.openstreetmap.josm.Main;
    2222import org.openstreetmap.josm.data.Bounds;
     23import org.openstreetmap.josm.data.DataSource;
    2324import org.openstreetmap.josm.data.coor.LatLon;
    2425import org.openstreetmap.josm.data.osm.Changeset;
    2526import org.openstreetmap.josm.data.osm.DataSet;
    26 import org.openstreetmap.josm.data.osm.DataSource;
    2727import org.openstreetmap.josm.data.osm.Node;
    2828import org.openstreetmap.josm.data.osm.NodeData;
  • trunk/src/org/openstreetmap/josm/io/OsmWriter.java

    r7299 r7575  
    1212import java.util.Map.Entry;
    1313
     14import org.openstreetmap.josm.data.DataSource;
    1415import org.openstreetmap.josm.data.coor.CoordinateFormat;
    1516import org.openstreetmap.josm.data.coor.LatLon;
    1617import org.openstreetmap.josm.data.osm.Changeset;
    1718import org.openstreetmap.josm.data.osm.DataSet;
    18 import org.openstreetmap.josm.data.osm.DataSource;
    1919import org.openstreetmap.josm.data.osm.INode;
    2020import org.openstreetmap.josm.data.osm.IPrimitive;
Note: See TracChangeset for help on using the changeset viewer.