यह विश्लेषणात्मक ज्यामिति की समस्या है और इसका समाधान पॉल बोर्के ने 1998 में दिया था ( न्यूनतम दूरी के बीच बिंदु और एक रेखा )। किसी बिंदु से रेखा या रेखा खंड की सबसे छोटी दूरी इस बिंदु से रेखा खंड तक लंबवत है। पायथन सहित विभिन्न भाषाओं में उनके एल्गोरिथ्म के कई संस्करण प्रस्तावित किए गए हैं, जैसे कि पाइथन में एक बिंदु से रेखा खंड की दूरी को मापना। लेकिन कई अन्य हैं (जैसे बिंदु परत के बीच का निकटतम पड़ोसी और शेपली के साथ एक पंक्ति परत )
# basic example with PyQGIS
# the end points of the line
line_start = QgsPoint(50,50)
line_end = QgsPoint(100,150)
# the line
line = QgsGeometry.fromPolyline([line_start,line_end])
# the point
point = QgsPoint(30,120)
def intersect_point_to_line(point, line_start, line_end):
''' Calc minimum distance from a point and a line segment and intersection'''
# sqrDist of the line (PyQGIS function = magnitude (length) of a line **2)
magnitude2 = line_start.sqrDist(line_end)
# minimum distance
u = ((point.x() - line_start.x()) * (line_end.x() - line_start.x()) + (point.y() - line_start.y()) * (line_end.y() - line_start.y()))/(magnitude2)
# intersection point on the line
ix = line_start.x() + u * (line_end.x() - line_start.x())
iy = line_start.y() + u * (line_end.y() - line_start.y())
return QgsPoint(ix,iy)
line = QgsGeometry.fromPolyline([point,intersect_point_to_line(point, line_start, line_end)])
और परिणाम है
आपकी समस्या के समाधान को अपनाना आसान है, बस सभी लाइन खंडों के माध्यम से लूप लें, खंडों के अंत बिंदुओं को निकालते हुए और फ़ंक्शन को लागू करें।