Search code examples
turfjs

Distance between two points over a path with turf.js


It's possible to calculate the distance between two points over a line path using turfjs? How?


Solution

  • Slice the line using your two points using turf.lineSlice. This will return a new line which consists of just the sections on the line between your two points. Next you can use turf.lineDistance to calculate the distance of that sliced line.

    var line = {
      "type": "FeatureCollection",
      "features": [
        {
          "type": "Feature",
          "properties": {},
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [4.0155029296875, 40.18726672309203 ],
              [4.0814208984375, 40.195659093364654 ],
              [4.15283203125, 40.19146303804063 ],
              [4.185791015625, 40.17887331434696 ],
              [4.2242431640625, 40.15788524950653 ],
              [4.273681640625, 40.111688665595956 ],
              [4.3011474609375, 40.06125658140474 ],
              [4.290161132812499, 40.02340800226773 ],
              [4.3341064453125, 39.97291055131899 ],
              [4.4000244140625, 39.96870074491696 ],
              [4.4659423828125, 39.977120098439634 ],
              [4.531860351562499, 40.002371935876475 ],
              [4.5648193359375, 40.052847601823984 ],
              [4.5648193359375, 40.11588965267845 ]
            ]
          }
        }
      ]
    };
    
    var start = {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "type": "Point",
        "coordinates": [4.2400360107421875, 40.143189742924406 ]
      }
    };
    var stop = {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "type": "Point",
        "coordinates": [4.3059539794921875, 40.00815750046493 ]
      }
    };
    
    var sliced = turf.lineSlice(start, stop, line.features[0]);
    var length = turf.lineDistance(sliced, 'kilometers');