我按照官方的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"
教程中的输出
我做错了什么?如何比较表中多边形集合的边界框?
我在Windows 10上运行PostgreSQL 9.4.26和PostGIS 2.5.1。