检查PostGIS中的等边框

问题描述 投票:1回答:1

我按照官方的PostGIS介绍(https:/www.postgis.networkshopspostgis-introequality.html),并在第22.1.3章上苦恼。笔者要比较不同多边形的边界框与 = 来检查extents是否相等。不幸的是,运行网站上的代码并没有给我预期的结果,就像训练练习一样。

下面是介绍中的代码。

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

我做错了什么?如何比较表中多边形集合的边界框?

我在Windows 10上运行PostgreSQL 9.4.26和PostGIS 2.5.1。

postgis
1个回答
0
投票

工作室已经过时了。

文档

如果Geometrygeography A的坐标和坐标顺序与Geometrygeography B的坐标和坐标顺序相同,则=运算符返回TRUE。

更改:2.4.0,在之前的版本中,这是边界盒平等而不是几何平等。如果您需要边界盒平等,请使用 ~= 而不是。

© www.soinside.com 2019 - 2024. All rights reserved.