OSM data Extraction

Hi guys,

I am working on simulations and got stuck on while extracting data from OSM using overpass API, I have GPS data in the form of GPX format which includes the track, lat, long, alt, speed, time.

  • I am able to download the data from overpass API but the data is too large, I need the exact road node on which the car travel.

  • I also plotted the track on OSM and all the nodes are on road but I need the road nodes but not able to do so.

  • I extract the node values manually by using JOSM but automated needed.

Please have a look towards the code, GPX file and help me in this situation.
CODE:

import overpass
api = overpass.API()
data = api.get('way(40.763893803,-74.082349381, 40.764163365,-74.083704315)["highway"];(._;>;)', verbosity='geom')
#['timeout:50'];
[f for f in data.features  if f.geometry['type'] == "LineString"]

GPX file:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<gpx version="1.0" creator="GPS Visualizer http://www.gpsvisualizer.com/" xmlns="http://www.topografix.com/GPX/1/0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
<trk>
  <name>video8</name>
  <trkseg>
    <trkpt lat="40.682301298" lon="-73.953724215">
      <ele>23.141998291</ele>
      <time>2017-08-22T18:35:58.999Z</time>
      <speed>3.40</speed>
    </trkpt>
    <trkpt lat="40.682411604" lon="-73.953747014">
      <ele>23.008666992</ele>
      <time>2017-08-22T18:35:59.999Z</time>
      <speed>3.42</speed>
    </trkpt>
    <trkpt lat="40.682526813" lon="-73.953767382">
      <ele>23.066833496</ele>
      <time>2017-08-22T18:36:00.999Z</time>
      <speed>3.49</speed>
    </trkpt>
    <trkpt lat="40.682635317" lon="-73.953787834">
      <ele>23.010070801</ele>
      <time>2017-08-22T18:36:01.999Z</time>
      <speed>3.41</speed>
    </trkpt>
    <trkpt lat="40.682737744" lon="-73.953807028">
      <ele>22.95098877</ele>
      <time>2017-08-22T18:36:02.999Z</time>
      <speed>3.33</speed>
    </trkpt>
    <trkpt lat="40.682835728" lon="-73.953827648">
      <ele>22.885559082</ele>
      <time>2017-08-22T18:36:03.999Z</time>
      <speed>3.19</speed>
    </trkpt>
    <trkpt lat="40.682914266" lon="-73.953843741">
      <ele>23.037475586</ele>
      <time>2017-08-22T18:36:04.999Z</time>
      <speed>2.73</speed>
    </trkpt>
    <trkpt lat="40.682994397" lon="-73.9538569">
      <ele>22.984954834</ele>
      <time>2017-08-22T18:36:05.999Z</time>
      <speed>2.46</speed>
    </trkpt>
    <trkpt lat="40.683069038" lon="-73.953867965">
      <ele>22.881835938</ele>
      <time>2017-08-22T18:36:06.999Z</time>
      <speed>2.33</speed>
    </trkpt>
    <trkpt lat="40.683139991" lon="-73.953879615">
      <ele>22.914825439</ele>
      <time>2017-08-22T18:36:07.999Z</time>
      <speed>2.17</speed>
    </trkpt>
    <trkpt lat="40.683212704" lon="-73.953894619">
      <ele>22.831573486</ele>
      <time>2017-08-22T18:36:08.999Z</time>
      <speed>2.29</speed>
    </trkpt>
    <trkpt lat="40.683291075" lon="-73.953912808">
      <ele>22.515075684</ele>
      <time>2017-08-22T18:36:09.999Z</time>
      <speed>2.49</speed>
    </trkpt>
    <trkpt lat="40.683376025" lon="-73.953931499">
      <ele>22.569793701</ele>
      <time>2017-08-22T18:36:10.999Z</time>
      <speed>2.77</speed>
    </trkpt>
    <trkpt lat="40.68347225" lon="-73.95395237">
      <ele>22.675323486</ele>
      <time>2017-08-22T18:36:11.999Z</time>
      <speed>3.01</speed>
    </trkpt>
    <trkpt lat="40.683571198" lon="-73.953973325">
      <ele>22.467987061</ele>
      <time>2017-08-22T18:36:12.999Z</time>
      <speed>3.17</speed>
    </trkpt>
    <trkpt lat="40.683675553" lon="-73.953993945">
      <ele>22.286193848</ele>
      <time>2017-08-22T18:36:13.999Z</time>
      <speed>3.28</speed>
    </trkpt>
    <trkpt lat="40.683780452" lon="-73.954014983">
      <ele>22.19921875</ele>
      <time>2017-08-22T18:36:14.999Z</time>
      <speed>3.36</speed>
    </trkpt>
    <trkpt lat="40.683892979" lon="-73.954037279">
      <ele>22.282440186</ele>
      <time>2017-08-22T18:36:15.999Z</time>
      <speed>3.45</speed>
    </trkpt>
    <trkpt lat="40.684003118" lon="-73.954059072">
      <ele>21.972961426</ele>
      <time>2017-08-22T18:36:16.999Z</time>
      <speed>3.48</speed>
    </trkpt>
    <trkpt lat="40.684101773" lon="-73.95407944">
      <ele>22.180084229</ele>
      <time>2017-08-22T18:36:17.999Z</time>
      <speed>2.95</speed>
    </trkpt>
    <trkpt lat="40.684171594" lon="-73.954093941">
      <ele>22.190643311</ele>
      <time>2017-08-22T18:36:18.999Z</time>
      <speed>2.20</speed>
    </trkpt>
    <trkpt lat="40.684210653" lon="-73.954101233">
      <ele>22.49911499</ele>
      <time>2017-08-22T18:36:19.999Z</time>
      <speed>1.47</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>22.667816162</ele>
      <time>2017-08-22T18:36:20.999Z</time>
      <speed>0.73</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>22.830780029</ele>
      <time>2017-08-22T18:36:21.999Z</time>
      <speed>0.00</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>22.898345947</ele>
      <time>2017-08-22T18:36:22.999Z</time>
      <speed>0.00</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>23.049987793</ele>
      <time>2017-08-22T18:36:23.999Z</time>
      <speed>0.00</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>23.011505127</ele>
      <time>2017-08-22T18:36:24.999Z</time>
      <speed>0.00</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>22.887054443</ele>
      <time>2017-08-22T18:36:25.999Z</time>
      <speed>0.00</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>22.980010986</ele>
      <time>2017-08-22T18:36:26.999Z</time>
      <speed>0.00</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>22.982849121</ele>
      <time>2017-08-22T18:36:27.999Z</time>
      <speed>0.00</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>22.879455566</ele>
      <time>2017-08-22T18:36:28.999Z</time>
      <speed>0.00</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>22.71105957</ele>
      <time>2017-08-22T18:36:29.999Z</time>
      <speed>0.00</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>22.656463623</ele>
      <time>2017-08-22T18:36:30.999Z</time>
      <speed>0.00</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>22.447113037</ele>
      <time>2017-08-22T18:36:31.999Z</time>
      <speed>0.00</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>22.404449463</ele>
      <time>2017-08-22T18:36:32.999Z</time>
      <speed>0.00</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>22.249298096</ele>
      <time>2017-08-22T18:36:33.999Z</time>
      <speed>0.00</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>22.093780518</ele>
      <time>2017-08-22T18:36:34.999Z</time>
      <speed>0.00</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>21.981140137</ele>
      <time>2017-08-22T18:36:35.999Z</time>
      <speed>0.00</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>21.801544189</ele>
      <time>2017-08-22T18:36:36.999Z</time>
      <speed>0.00</speed>
    </trkpt>
    <trkpt lat="40.684222388" lon="-73.954103747">
      <ele>21.651397705</ele>
      <time>2017-08-22T18:36:37.999Z</time>
      <speed>0.00</speed>
    </trkpt>
  </trkseg>
</trk>
</gpx>

I’d suggest that you download OSM data from e.g. https://download.geofabrik.de/ and then extract the data that you want from that (probably only “highway=blah” in a certain area).

Can’t help you with your code sample though - it’s not really clear what you are trying to do.

Hi,

  • I am trying to extract the road geometry from gps data. for instance, the GPX file contains the lat, long on which the car moves and from that I need to extract the road geometry. In code I had use overpass API and give minimum lat, minimum long, maximum lat, maximum long through which I got some data with nodes and ways.

Thanks,
Qazi