Нахождение точки пересечения двух линий по углам и известным точкам (биангуляция)
Найти точку пересечения двух прямых отложенных от двух точек с известными координатами и азимутов от этих точек.
ПрименениеДля изучения поведения животных часто используют радиотелеметрический метод: исследуемый объект помечается радиопередатчиком, который испускает радиосигнал определенной частоты и далее исследователь при помощи приемника и принимающей антенны следит за перемещениями этого объекта. Одним из возможных способов определения точного местоположения объекта является метод биангуляции. Для этого исследователю требуется взять 2 азимута на исследуемый объект с точек с известными координатами. Местоположение объекта будет соответствовать точке пересечения этих двух азимутов. Координаты точек, с которых засекаются азимуты можно снять с помощью спутникового навигатора (GPS), либо азимуты снимаются с реперных точек, координаты которых известны заранее. Азимут в этом случае – направление на источник наиболее сильного сигнала, исходящего от меченного передатчиком объекта, измеряемое обычно в градусах.
Перед расчетами необходимо точки полученные с помощью GPS перевести в спроецированную систему координат, например соответствующую зону UTM, это можно сделать с помощью DNRGarmin.
Для того чтобы рассчитанное местоположение исследуемого объекта наиболее точно соответствовало реальному положению нужно учитывать следующее:
1) необходимо стараться дождаться момента, чтобы ошибка определения координат в навигаторе была как можно меньше.
2) чтобы угол между азимутами стремился к 90 градусам (по крайней мере, был больше 30 и меньше 150 градусов).
Расстояние, с которого следует снимать азимут, зависит от дальности действия передатчика, при этом применяется эмпирическое правило, что погрешность в определении азимута увеличивается на 1 метр с удалением от исследуемого объекта на каждые 10 м. Т.о. при снятии азимута с расстоянием до объекта 100 м погрешность составит 10 м. Однако, это правило применимо на ровной открытой местности. Следует учитывать, что неровности рельефа и древесно-кустарниковая растительность экранируют и отражают сигнал. Следует избегать нахождения в непосредственной близости от исследуемого объекта, т.к. во-первых, слишком сильный сигнал затруднит определение точного азимута, а, во-вторых, в некоторых случаях будет невозможно рассчитать точку пересечения из-за того, что второй азимут будет проходить за точкой снятия первого азимута. Временной интервал между снятием пары азимутов должен быть минимизирован, но, конечно, зависит от подвижности исследуемого животного.
РешениеЗадача решается с помощью простейшей геометрии и решения системы уравнений. Для начала из точки и азимута получаем уравнение прямой, для этого:
Из уравнения общего вида:
ax + by + c = 0
при условии, что b<>0 получаем
y = kx + d, где k=-(a/b), d=-(c/b)
таким образом, получаем
Далее решив систему уравнений:
k1x + d1 = y k2x + d2 = y
Получаем координаты X и Y общей точки двух прямых (точки пересечения).
В уравнении необходимо предусмотреть два особых случая, когда прямые параллельны (k1=k2).
Так как мы имеем дело не с векторами и не с лучами, то есть у линий нет начала и конца, то так же необходимо предусмотреть случай пересечения прямых вне области интереса, т.н. ложное пересечение. Решение этой задачи достигается измерением азимута из ложной точки a3 на точку 2, если азимут a3 = a2, то пересечение ложное, обратный азимут от полученной точки обратно на исходные 2 не должен быть равен одному из исходных азимутов.
Необходимая процедура на языке Avenue выглядит так:
Здесь находится расширение для Arcview GIS для расчета точек пересечения двух прямых, включая проверку ложных пересечений.
В качестве исходных данных для работы используется точечная тема Arcview (в формате shape или заданная как Event theme таблица). Тема должна быть выделена (активна). Пары исходных координат (засечек) в таблице должны располагаться друг за другом.
Названия полей должны быть следующими:X - долготаY - широтаBear - азимут (угол от оси Y по часовой стрелке) (скрипт легко модифицируется если у вас другие названия полей).
В названиях полей не должно содержаться символа #. Такие поля следует переименовать. Покрытия Arcinfo некоторые поля которых как правило содержат такой символ нужно сконвертировать в shape-файл и также переименовать поля, убрав #.
Результатом работы скрипта является shape-файл в атрибутивной таблице которого будут находится расчетные координаты точки пересечения для каждой пары засечек. Полей в исходной таблице может быть больше чем 3 (x, y, bear), дополнительные поля перенесутся в результирующую тему. Они будут заполнятся значениями из первой точки пары из исходной таблицы.