Рапортую еще раз: Алгоритм классный - рекомендую. Прекрасно работает вот с таким объектами в количестве 505 штук. Принадлежность находит мгновенно. И даже вот так могЁт... (В "Tip" показывает имя объекта, расстояние до него от точки и направление на объект.) 
Думал чем тестить, чтобы было наглядно... Нашел в сети программу "SASPlanet", пользующую Win Api. Засосал в нее тот же KML файл, который пользую для тестов. А дальше дело техники: тычу мышОй "создать новую точку". Этот SAS выводит окно для редактирования, в котором присутствуют координаты точки. Далее вступает в дело вот этот скриптик на AutoIt, берет, что нужно из окна, вызывает мою утилитку и выводит в "Tip" результат :
while 1
  $hWnd = WinWaitActive("Добавить", "", 10000) ; Ждем открытия требуемого окна SAS
  If $hWnd Then
   Local $sText1 = WinGetText($hWnd)           ; Выгребаем текст окна
   WinMove($hWnd, "", -400, 100)               ; задвигаем окно ""в Малые Ебеня", чтобы не мельтешило в дальнейшем
   WinClose($hWnd)                             ; Закрываем окно
     Local $iPosition = StringInStr($sText1, "E")          ; Выковыриваем координаты
 	 $sText1 = StringTrimLeft ($sText1, $iPosition )
          $iPosition = StringInStr($sText1, """")
	 Local $sText2 = StringLeft ($sText1,  $iPosition-1 )
      ;MsgBox($MB_SYSTEMMODAL, "",  $sText2 )
      $iPosition = StringInStr($sText1, "N")
      $sText1 = StringTrimLeft ($sText1, $iPosition )
      $iPosition = StringInStr($sText1, """")
	  $sText1 = StringLeft ($sText1,  $iPosition-1 )
	 Local $arr = StringSplit($sText1, "°'")               ; разбиваем строку с координатами на подстроки
     $arr[3] = StringReplace($arr[3], ",", ".")
     Local $Degrees = Number($arr[1])                      ;  переводим координаты  ШИРОТЫ из градусов, минут, секунд в десятичные градусы
     Local $Minutes = Number($arr[2])
     Local $Seconds = Number($arr[3])
  	 Local $DD1 =  ($Seconds/3600) + ($Minutes/60) + $Degrees
     Local $arr = StringSplit($sText2, "°'")                ; разбиваем строку с координатами на подстроки
     $arr[3] = StringReplace($arr[3], ",", ".")
     Local $Degrees = Number($arr[1])                       ;  переводим координаты  Долготы из градусов, минут, секунд в десятичные градусы
     Local $Minutes = Number($arr[2])
     Local $Seconds = Number($arr[3])
  	 Local $DD2 = ($Seconds/3600.0) + ($Minutes/60.0) + $Degrees
     Local  $SH = string($DD1)
     Local  $DL = string($DD2)
	  $iReturn = ShellExecuteWait("geofields.exe","aurora.kml "& $SH & " " & $DL)
	   if  $iReturn = 1 then
            Local $hFileOpen = FileOpen("fieldname.txt", $FO_READ)
			$sFileRead = FileReadLine($hFileOpen, 1)
 	        FileClose($hFileOpen)
            ;ConsoleWrite($sFileRead & @CRLF)
            ToolTip($sFileRead)
           Else
            ; ConsoleWrite("Поле не найдено!" & @CRLF)
            ToolTip("Поле не найдено!!!")
       endif
  EndIf
WEnd
Пришлось посуетиться конечно, зато зато все, как на ладони...