Нахождение точки пересечения двух линий по углам и точкам
- Максим Дубинин
 - MindingMyOwnBusiness
 - Сообщения: 9129
 - Зарегистрирован: 06 окт 2003, 20:20
 - Репутация: 748
 - Ваше звание: NextGIS
 - Откуда: Москва
 - Контактная информация:
 
Нахождение точки пересечения двух линий по углам и точкам
Обсуждение темы:
Нахождение точки пересечения двух линий по углам и известным точкам
http://gis-lab.info/qa/biangulation.html
Обновления:
06.03.2006 Добавлена обработка "ложных" пересечений, описание применения, расширение для Arcview GIS.
			
													Нахождение точки пересечения двух линий по углам и известным точкам
http://gis-lab.info/qa/biangulation.html
Обновления:
06.03.2006 Добавлена обработка "ложных" пересечений, описание применения, расширение для Arcview GIS.
					Последний раз редактировалось Максим Дубинин 07 мар 2006, 03:01, всего редактировалось 2 раза.
									
			
									пристегивайтесь, турбулентность прямо по курсу
						- 
				Neo
 - Интересующийся
 - Сообщения: 46
 - Зарегистрирован: 13 фев 2010, 21:41
 - Репутация: 0
 
Используемые координаты XY
При определении координат точки стояния с помощью спутникового навигатора (GPS)
в расчетах нужно использовать не геоцентрические координаты XY, а плановые, "плоские" координаты XY. Следовательно перед расчетом уравнений линии и точки перечения линий необходимо выполнить координатное преобразование:
XYZ => XYH
в используемой картографической проекции (и геодезических датах [geodetic datums]), и далее использовать не пространственные координаты XY, а плановые XY.
			
									
									
						в расчетах нужно использовать не геоцентрические координаты XY, а плановые, "плоские" координаты XY. Следовательно перед расчетом уравнений линии и точки перечения линий необходимо выполнить координатное преобразование:
XYZ => XYH
в используемой картографической проекции (и геодезических датах [geodetic datums]), и далее использовать не пространственные координаты XY, а плановые XY.
- Максим Дубинин
 - MindingMyOwnBusiness
 - Сообщения: 9129
 - Зарегистрирован: 06 окт 2003, 20:20
 - Репутация: 748
 - Ваше звание: NextGIS
 - Откуда: Москва
 - Контактная информация:
 
Re: Нахождение точки пересечения двух линий по углам и точкам
все верно, на самом деле речь ведется о спроецированных координатах, странно, что в статье забыл указать в свое время, скрипт тем не менее рабочий
			
									
									пристегивайтесь, турбулентность прямо по курсу
						- 
				chnav
 - Новоприбывший
 - Сообщения: 9
 - Зарегистрирован: 05 июн 2010, 10:11
 - Репутация: 0
 
Вычисление азимута и угла между двумя прямыми для прямоуголь
При расчете азимута между дувумя точками проще использовать функцию atan2(), она есть во всех языках программирования и Excel. Тогда не надо делать анализ квадранта, формула в одну строку.
azim = atan2 (North2-North1, East2-East1)
			
									
									
						azim = atan2 (North2-North1, East2-East1)
- Максим Дубинин
 - MindingMyOwnBusiness
 - Сообщения: 9129
 - Зарегистрирован: 06 окт 2003, 20:20
 - Репутация: 748
 - Ваше звание: NextGIS
 - Откуда: Москва
 - Контактная информация:
 
Re: Нахождение точки пересечения двух линий по углам и точкам
chnav, все верно, atan2() в похожей ситуации уже осваивал вот здесь
Скрипт писался лет 5 назад под Avenue, там нет atan2(), там пришлось квадрантами.
			
									
									Скрипт писался лет 5 назад под Avenue, там нет atan2(), там пришлось квадрантами.
пристегивайтесь, турбулентность прямо по курсу
						- 
				chnav
 - Новоприбывший
 - Сообщения: 9
 - Зарегистрирован: 05 июн 2010, 10:11
 - Репутация: 0
 
Re: Нахождение точки пересечения двух линий по углам и точкам
Извините, не обратил внимания на дату 
			
									
									
						- 
				vafonkin
 - Новоприбывший
 - Сообщения: 3
 - Зарегистрирован: 21 мар 2012, 03:33
 - Репутация: 0
 
Re: Нахождение точки пересечения двух линий по углам и точка
Приветствую,
Работаю над такой же задачей и наткнулся на необходимость нахождения точки пересечения двух азимутов. Первым решением было использование Хаверсайн формулы, но от него пришлось отказаться из за "тяжести" вычислений. Дело в том что код портируется на 8 битный процессор с большими ограничениями по размерам памяти (368 байт на Рам) и отсутствием поддержки "floating point".
С проблемой перевода GPS координат в "Cartesian" справился:
x = longitude*60*1852*cos(latitude)
y = latitude*60*1852
И наткнулся на статью на этом сайте.
Прочитал и мне кажется что часть кода отрезана так как код заканчивается вычислением расстояния между заданными координатами, а не координатами непосредственно точки пересечения. Буду благодарен за любую помощь, так как "втиснуть" расчет точки пересечения стандартными методами в 368 байт пока не могу. Погрешности связанные с принятием того Земля Плоская а не круглая - устраивают, так как максимальная удаленность точки пересечения 4 километра.
[Сообщение с мобильного устройства]
			
									
									
						Работаю над такой же задачей и наткнулся на необходимость нахождения точки пересечения двух азимутов. Первым решением было использование Хаверсайн формулы, но от него пришлось отказаться из за "тяжести" вычислений. Дело в том что код портируется на 8 битный процессор с большими ограничениями по размерам памяти (368 байт на Рам) и отсутствием поддержки "floating point".
С проблемой перевода GPS координат в "Cartesian" справился:
x = longitude*60*1852*cos(latitude)
y = latitude*60*1852
И наткнулся на статью на этом сайте.
Прочитал и мне кажется что часть кода отрезана так как код заканчивается вычислением расстояния между заданными координатами, а не координатами непосредственно точки пересечения. Буду благодарен за любую помощь, так как "втиснуть" расчет точки пересечения стандартными методами в 368 байт пока не могу. Погрешности связанные с принятием того Земля Плоская а не круглая - устраивают, так как максимальная удаленность точки пересечения 4 километра.
[Сообщение с мобильного устройства]

- Максим Дубинин
 - MindingMyOwnBusiness
 - Сообщения: 9129
 - Зарегистрирован: 06 окт 2003, 20:20
 - Репутация: 748
 - Ваше звание: NextGIS
 - Откуда: Москва
 - Контактная информация:
 
Re: Нахождение точки пересечения двух линий по углам и точка
вы правы, код обрезался, нужно добавить и немного поменять концовку
			
									
									Код: Выделить всё
D1 = l1a*l2b
D2 = l2a*l1b
D3 = D1 - D2
if (D3 = 0) then
   resX = 9999
   resY = 9999
end
resX = ((l1c*l2b) - (l2c*l1b))/D3
resY = ((l1a*l2c) - (l2a*l1c))/D3
пристегивайтесь, турбулентность прямо по курсу
						- 
				vafonkin
 - Новоприбывший
 - Сообщения: 3
 - Зарегистрирован: 21 мар 2012, 03:33
 - Репутация: 0
 
Re: Нахождение точки пересечения двух линий по углам и точка
Спасибо...
-(a1rad.tan) тоже самое что atan2 в С?
[Сообщение с мобильного устройства]
			
									
									
						-(a1rad.tan) тоже самое что atan2 в С?
[Сообщение с мобильного устройства]

- 
				andruxin
 - Новоприбывший
 - Сообщения: 6
 - Зарегистрирован: 23 фев 2012, 20:50
 - Репутация: 0
 
Re: Нахождение точки пересечения двух линий по углам и точка
А подскажите как искать точку пересечения двух отрезков заданных географическими координатами(широта, долгота)? 
Как искать пересечение отрезков по декартовым координатам я знаю, а вот с широтой и долготой проблема.
			
									
									
						Как искать пересечение отрезков по декартовым координатам я знаю, а вот с широтой и долготой проблема.
- 
				vafonkin
 - Новоприбывший
 - Сообщения: 3
 - Зарегистрирован: 21 мар 2012, 03:33
 - Репутация: 0
 
Re: Нахождение точки пересечения двух линий по углам и точка
Для определения пересечений в пространстве используется формула Хеверсинусов. Hiversine
[ Сообщение с мобильного устройства ]
			
									
									
						[ Сообщение с мобильного устройства ]
- vasnake
 - Интересующийся
 - Сообщения: 22
 - Зарегистрирован: 23 май 2013, 16:42
 - Репутация: 6
 - Откуда: Москва
 - Контактная информация:
 
Re: Нахождение точки пересечения двух линий по углам и точка
Вот тутandruxin писал(а):А подскажите как искать точку пересечения двух отрезков заданных географическими координатами(широта, долгота)?
http://www.movable-type.co.uk/scripts/latlong.html
есть прекрасный набор формул с разъяснениями и реализацией на JavaScript, практически на все случаи. При расчетах предполагается, что Земля - сфера а координаты - широта, долгота (географические). Кстати, есть и нахождение точки пересечения по точкам и азимутам.
http://vasnake.blogspot.ru/2013/11/loxodrome.html
It ain't easy. It just proves how great I am.
						Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 32 гостя