错误:GEOSIntersects:TopologyException:边位置冲突

时间:2014-04-14 19:42:49

标签: sql postgresql geometry postgis

我有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

有谁能指出我在这里做错了什么?

2 个答案:

答案 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'不一定是避免此错误的充分条件。