Knowledge Base



KB10329 - Measure shortest distance between a line and a point.


 ' place DKcomponent on the form just to be sure that an object will be connected
Public ProjectionList As New TatukGIS_DK.XGIS_ProjectionList()
  Const Pi = 3.14159265358979
  Dim GISUtils as new XGIS_Utils

--- code
Private Sub My_procedure()

  Dim proj As TatukGIS_DK.XGIS_ProjectionAbstract
  Dim src As New TatukGIS_DK.XGIS_Coordinate()
  Dim dst As New TatukGIS_DK.XGIS_Coordinate()
  Dim unt As New TatukGIS_DK.XGIS_Units()

  proj = ProjectionList.FindEx("UTM")
  proj.SetUp(0, 0, 0, 0, 0, 0, 17, 0)

  'coordinates are:
  'Point 1
  'Lat: 2626.9222755
  'Lng: 8143.1208638

  ' 8143.1208638 = 81 deg 43.1208638 = 81 + 43.1208638 / 60
  ' and we must express in radians so * Pi / 180

  src.Prepare((81 + 43.1208638 / 60) * Pi / 180, (26 + 26.9222755 / 60) * Pi / 180, 0)
  dst = proj.Projected(src)

  'plug in the results to a textbox for display
  TextBox1.Text = dst.X
  TextBox2.Text = dst.Y

  End Sub


The trigonometry equation to calculate the distance and to indicate on which side of the line the point is located would be as follows:

ptA - starting point
ptB - ending point
ptG - point to test
distance = GISUtils.GisLine2Point(ptA, ptB, ptG)
res = (ptG.Y - ptA.Y) *(ptB.X - ptA.X) * (ptG.X - ptA.X) * (ptB.Y -ptA.Y)

if res > 0 then point is on the left
if res = 0 then point is in-line
if res < 0 then point is on the right
Created: November 21, 2003, Modified: August 03, 2015
follow us on Facebook  follow us on Twitter  follow us on Google +  follow us on LinkedIn  Embarcadero