Як я можу обчислити опору між двома точками в PostGIS?


19

Як я можу знайти опори між двома точками в PostGIS?

Вкажіть, будь ласка, у своїй відповіді, чи є метод отримання опори на сфероїді чи планарний підшипник.

Відповіді:


21

Використання ST_Azimuth

Плоский підшипник можна обчислити, використовуючи ST_Azimuth:

SELECT ST_Azimuth(ST_MakePoint(1,2), 
           ST_MakePoint(3,4))/(2*pi())*360 as degAz,
       ST_Azimuth(ST_MakePoint(3,4), 
           ST_MakePoint(1,2))/(2*pi())*360 As degAzrev

degaz   degazrev
------  ---------
45      225

Для сферичного азимуту (цитування групи potgis-користувачів ):

Функція азимуту PostGIS, схоже, використовує просту функцію арктану для визначення азимуту. Якщо ви перетворите свої координати в проектовану систему координат, а потім запустите запит, ваші результати будуть набагато ближче до результатів сайту FCC.
Ось швидкий перехід до зони UTM 31:

select degrees(azimuth(
'POINT(634714.442133176 5802006.052402816)',
'POINT(634731.2410598891 5801981.648284801)'
));

що дає азимут 145,457858825445. Точки в центрі зони UTM або більш підходяща проекція давали б кращі результати.

Використання тригонометричних функцій та ST_distance_sphere

Це рішення, яке я вибрав, коли мені доводилося стикатися з цими проблемами, головним чином, із застарілих причин (у мене була функція Python, яка обчислює азимут). Спочатку нам потрібно знайти функцію, яка б нам сказала точну відстань між двома точками. Цитуючи посібник Postgis :

ST_distance_sphere (точка, точка) Повертає лінійну відстань у метрах між двома точками lat / lon. Використовує сферичну землю і радіус 6370986 метрів. Швидше, ніж distance_spheroid (), але менш точне. Реалізовано лише для балів.

Виміряйте відстань довготи та широти між точками та використовуйте arctanфункцію для отримання кута.


Я спробую опублікувати пітонний код пізніше, і, можливо, зроблю порівняння між методами - Якщо я можу знайти цей спадковий код ...
Адам Матан

Чи можете ви уточнити, як рухатися відстань до кута atan? Моя тригометрія трохи
туманна

11

Для тих, хто зараз стикається з цим питанням - PostGIS підтримує ST_Azimuth з географії (сфероїда) станом на 2.0.0.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.