Який пристрій використовується в ST_Distance ()?


24

Цікаво, що це за одиниця повернутого поплавця ST_Distance.

У документації зазначено:

... декартська мінімальна відстань (заснована на просторовому відбиванні) між двома геометріями в проектованих одиницях.

Що це за проектовані одиниці?

Геометрія зберігається в поле: geometry(Point,4326).

Відповіді:


36

Я думаю, що це найчастіше питання у списку PostGIS протягом часу :-)

Якщо ваші дані в SRID 4326 і ви використовуєте geometryтип, результат не дасть жодного значення. Це в градусах.

Щоб отримати результат у метрах, просто geographyнаберіть набрати і ST_Distanceобчислить відстань по великому колу замість цього і повернемо в метрах.

geometry(Point,4326)::geography

Інший варіант - спроектувати ваші дані в якусь локальну проекцію на основі відповідного блоку. Тоді відповідь буде в тому підрозділі.


2
Ось приклад пошуку відстані між двома рядками в таблиці SELECT ST_Distance (a.geom :: географія, b.geom :: географія) ОТ pure_gis a, pure_gis b WHERE a.id = '1' AND b.id = '2';
Брайан Макколл

4

З http://postgis.net/docs/ST_Distance.html

- Приклад геометрії - одиницями в плоских градусах 4326 є WGS 84 long lat unit = градусів

Якщо ST_Distanceдано дві геометрії, це передбачає, що ці геометрії дійсно є декартовими (або площинними) координатами. Таким чином, одиниці такі ж, як і в координатах - зазвичай метри або фути.

Ваша проблема, здається, полягає в тому, що ваша просторова система відліку, 4326, фактично використовує (кутові) географічні координати - градуси довгими латами - тому результати знаходяться в (дещо безглузді) градусах.


1
Результати абсолютно безглузді, навіть не дещо.
Пол Рамзі

@PaulRamsey. Хіба вони не будуть такими ж, як я отримав би "вимірювання" відстаней на проекції PlateCaree?
Мартін Ф

На ПК ви повернете лінійні одиниці назад і, принаймні, можете сказати "Гаразд, я знаю, що ці блоки можуть зазнати серйозних спотворень". Повертаючись до "градусів", люди можуть спокусити думати "ага, у мене тут кутова відстань, просто потрібно помножити на 2R, і у мене буде лінійна відстань". Одиниці роблять поганий вимір, що потенційно може бути ще більш жахливо вводити в оману. І ПК такий жахливий, що я не знаю, чому він отримує назву проекції ... не зберігає відстань, не зберігає напрямок, не зберігає площу ...
Пол Рамзі

ПК зберігає відстані вздовж екватора і перпендикулярно до екватора. Окрім необхідних перетворень радіану та радіусу (правда, це велика незручність), результати використання ST_Distance на 4326 геометріях матимуть таку ж загальну суміш недоліків та переваг, яку слід враховувати при використанні ST_Distance з геометріями проекції. Можливо, краща дискусія повинна бути (не "дещо" проти "цілком" безглуздою, але) "Чи слід ST_Distance та ST_Area навіть дозволяти повертати результати з 4326 геометріями?"
Мартін Ф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.