Проверка равных границ в PostGIS - PullRequest
1 голос
/ 07 мая 2020

Я следую официальному представлению PostGIS (https://www.postgis.net/workshops/postgis-intro/equality.html) и борюсь с главой 22.1.3. Автор хочет сравнить ограничивающие прямоугольники разных полигонов с =, чтобы проверить, равны ли экстенты. К сожалению, запуск кода с веб-сайта не дает ожидаемого результата, как в упражнении по обучению.

Вот код из введения:

CREATE TABLE polygons (id integer, name varchar, poly geometry);

INSERT INTO polygons VALUES
  (1, 'Polygon 1', 'POLYGON((-1 1.732,1 1.732,2 0,1 -1.732,
      -1 -1.732,-2 0,-1 1.732))'),
  (2, 'Polygon 2', 'POLYGON((-1 1.732,-2 0,-1 -1.732,1 -1.732,
      2 0,1 1.732,-1 1.732))'),
  (3, 'Polygon 3', 'POLYGON((1 -1.732,2 0,1 1.732,-1 1.732,
      -2 0,-1 -1.732,1 -1.732))'),
  (4, 'Polygon 4', 'POLYGON((-1 1.732,0 1.732, 1 1.732,1.5 0.866,
      2 0,1.5 -0.866,1 -1.732,0 -1.732,-1 -1.732,-1.5 -0.866,
      -2 0,-1.5 0.866,-1 1.732))'),
  (5, 'Polygon 5', 'POLYGON((-2 -1.732,2 -1.732,2 1.732,
      -2 1.732,-2 -1.732))');

SELECT a.name, b.name, CASE WHEN a.poly = b.poly
    THEN 'Equal Bounds' ELSE 'Non-equal Bounds' end
  FROM polygons as a, polygons as b LIMIT 10;

Мой вывод:

"Polygon 1";"Polygon 1";"Equal Bounds"
"Polygon 1";"Polygon 2";"Non-equal Bounds"
"Polygon 1";"Polygon 3";"Non-equal Bounds"
"Polygon 1";"Polygon 4";"Non-equal Bounds"
"Polygon 1";"Polygon 5";"Non-equal Bounds"
"Polygon 2";"Polygon 1";"Non-equal Bounds"
"Polygon 2";"Polygon 2";"Equal Bounds"
"Polygon 2";"Polygon 3";"Non-equal Bounds"
"Polygon 2";"Polygon 4";"Non-equal Bounds"
"Polygon 2";"Polygon 5";"Non-equal Bounds"

Вывод из учебника:

enter image description here

Что я делаю не так? Как сравнить ограничивающие рамки набора полигонов в таблице?

Я использую PostgreSQL 9.4.26 с PostGIS 2.5.1 на Windows 10

1 Ответ

0 голосов
/ 07 мая 2020

Мастерская устарела.

do c говорит

Оператор = возвращает TRUE, если координаты и порядок координат геометрия / география A совпадают с координатами и порядком координат для геометрии / географии B.

Изменено: 2.4.0, в предыдущих версиях это было равенство ограничивающей рамки, а не равенство геометрии c. Если вам нужно равенство ограничивающего прямоугольника, используйте вместо него ~ = .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...