我有PostgreSQL 9.2.4。这是我用来找出几何交叉结果的表格:
Column | Type | Modifiers
---------------------------------+--------------------------+-----------
id | integer |
full_resolution | character varying(2000) |
full_resolution_path | character varying(256) |
feature_id | text |
full_resolution_initiated_order | character varying(64) |
true_image_feature_footprint_id | integer |
true_image_tile_footprint_id | integer |
full_resolution_time_created | timestamp with time zone |
feature_geom | geometry |
tile_geom | geometry |
现在查询:
create Temp table temp4_test as
select id, ST_Intersects(feature_geom,tile_geom),full_resolution
, full_resolution_path, feature_id, full_resolution_initiated_order
, true_image_feature_footprint_id, true_image_tile_footprint_id
, full_resolution_time_created
from temp3_test;
给了我这个错误:
错误:GEOSIntersects:拓扑异常:边位置冲突-122.42466 47.085999999999999
有谁能指出我在这里做错了什么?
答案 0 :(得分:7)
我找到了马丁戴维斯" in this thread:
这是因为几何图形无效,而且是当前的 JTS / GEOS中使用的相交算法在无效时有小猫 几何用作输入。核心转储是不幸的(并且 显然在以后的版本中得到修复。)
显然,相同的无效数据导致PostGis v1.5中的核心转储,但在v2.0中引发了异常
答案 1 :(得分:4)
这也可能是尝试运行
的结果SELECT ST_Intersection(a.geom, b.geom)
FROM table a, table b
WHERE ST_Intersects(a.geom, b.geom) ;
如果存在各种几何类型的组合,尤其是点和线串。通过在所有几何上运行ST_MakeValid(geom),然后从查询中排除除MultiPolygons和Polygons以外的所有几何,问题就消失了。换句话说,ST_Isvalid(geom)='t'
不一定是避免此错误的充分条件。