Многоугольник, созданный с использованием центроида в postgis, имеет неправильную длину - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь создать многоугольник вокруг центроида, проецируя 4 точки по 2 метра каждая. Но стороны многоугольника не 4 метра. Я вижу только 3,7 метра и 2,8 метра.

SELECT ST_AsText(ST_MakeValid(ST_MakeEnvelope(
    ST_X(ST_Project(ST_SetSRID(ST_MakePoint(-94.308946032318019, 41.189416186516212), 4326), 2,  radians(225))::geometry),
    ST_Y(ST_Project(ST_SetSRID(ST_MakePoint(-94.308946032318019, 41.189416186516212), 4326), 2,  radians(225))::geometry),
    ST_X(ST_Project(ST_SetSRID(ST_MakePoint(-94.308946032318019, 41.189416186516212), 4326), 2,  radians(135))::geometry),
    ST_Y(ST_Project(ST_SetSRID(ST_MakePoint(-94.308946032318019, 41.189416186516212), 4326), 2,  radians(315))::geometry),
    4326
)));

Диагональ также не соответствует 4 метрам. Это 4,7 м. QGIS

1 Ответ

0 голосов
/ 20 июня 2020

Расстояние 4 м - это не сторона коробки, а его диагональ.

Если вы хотите, чтобы сторона коробки была 4 м, вам нужно будет спроецировать центр тяжести точки с углами 0, 90, 180 или 270 градусов.

отредактируйте следующий комментарий измерения : Длина диагонали действительно 4 м. Вы можете измерить его в Postgis (использование 45 градусов для проекта приводит к той же точке, которую вы создаете с использованием двух разных углов)

SELECT st_distance(
         ST_Project(ST_SetSRID(ST_MakePoint(-94.308946032318019, 41.189416186516212), 4326), 2,  radians(225))::geography,
         ST_Project(ST_SetSRID(ST_MakePoint(-94.308946032318019, 41.189416186516212), 4326), 2,  radians(45))::geography);
 st_distance
-------------
           4

В QGIS вам необходимо определить и использовать эллипсоидальное расстояние, иначе градус долготы считается такой же длины, что и градус широты, что неверно.

введите описание изображения здесь

...