ดูเหมือนว่าคุณกำลังใช้ MapInfo นี่คือฟังก์ชั่น MapBasic ที่ฉันเขียนกลับไปหาเครื่องมือภายในที่ฉันใช้งานอยู่ มันต้องใช้โหนดต้นทาง (จุด centroid ของคุณ) และวัตถุภูมิภาค (รูปหลายเหลี่ยม) เป็นอาร์กิวเมนต์และส่งกลับวัตถุจุดที่โหนดที่อยู่ไกลที่สุดในรูปหลายเหลี่ยมจากจุดต้นทาง
Function GetFurthest(ByVal oNode1 as Object, ByVal oObj as Object) as Object
Dim sourceE,sourceN,East,North,Longest,Dist as Float,
nNodes,nPolys,i,j as SmallInt,
oNode2 as Object
sourceE = CentroidX(oNode1)
sourceN = CentroidY(oNode1)
Longest = 0
nPolys = ObjectInfo(oObj,OBJ_INFO_NPOLYGONS)
For i = 1 to nPolys
nNodes = ObjectInfo(oObj,OBJ_INFO_NPOLYGONS+nPolys)
For j = 1 to nNodes
East = ObjectNodeX(oObj,i,j)
North = ObjectNodeY(oObj,i,j)
Dist = Distance(sourceE,sourceN,East,North,"m")
If Dist > Longest then
Longest = Dist
oNode2 = CreatePoint(East,North)
End if
Next
Next
GetFurthest = oNode2
End Function