无法在几何字段上使用ST_Intersects

时间:2016-09-10 07:22:56

标签: gis postgis sharpmap

我已使用 FWTools 将ESRI的个人地理数据库(* .mdb文件)转换为启用PostGIS的PostgreSQL数据库。我将几何字段命名为 wkb_geometry ,如下所示

wkb_geometry geometry(Geometry, 3148),

使用 ST_Intersects 查询数据库时出现以下错误

SQL

SELECT <other fields>, 
"wkb_geometry" AS "_smtmp_" FROM parcel WHERE  <condition>  
AND ST_Intersects(((E'\\001\\003\\000\\000 L\\014\\000\\000\\001\\000\\000\\000\\005\\000\\000\\000\\020\\2625\\334i\\032\\034A\\273n\\256E\\033\\340GA\\020\\2625\\334i\\032\\034A\\017\\261\\014\\353\\037\\340GA\\262\\304\\047\\007\\217\\032\\034A\\017\\261\\014\\353\\037\\340GA\\262\\304\\047\\007\\217\\032\\034A\\273n\\256E\\033\\340GA\\020\\2625\\334i\\032\\034A\\273n\\256E\\033\\340GA')) 
                    ,"wkb_geometry")

错误

  

错误:解析错误 - 无效的几何体
  第1行:... parcel WHERE parcelno&lt; 50 AND ST_Intersects(((E&#39; \ 001 \ 0 ...   提示:&#34; \ 0&#34; &lt; - 解析几何中位置2的错误

     

错误:解析错误 - 无效的几何体
  SQL状态:XX000
  提示:&#34; \ 0&#34; &lt; - 几何中位置2处的解析错误
  性格:245

我在前端使用SharpMap。

1 个答案:

答案 0 :(得分:1)

此处的问题不在于几何字段,而在于查询。

您应该像这样使用ST_GeomFromEWKB函数

SELECT <other fields>, 
"wkb_geometry" AS "_smtmp_" FROM parcel WHERE  <condition>  
AND ST_Intersects(ST_GeomFromEWKB(E'\\001\\003\\000\\000 L\\014\\000\\000\\001\\000\\000\\000\\005\\000\\000\\000\\020\\2625\\334i\\032\\034A\\273n\\256E\\033\\340GA\\020\\2625\\334i\\032\\034A\\017\\261\\014\\353\\037\\340GA\\262\\304\\047\\007\\217\\032\\034A\\017\\261\\014\\353\\037\\340GA\\262\\304\\047\\007\\217\\032\\034A\\273n\\256E\\033\\340GA\\020\\2625\\334i\\032\\034A\\273n\\256E\\033\\340GA') 
                    ,"wkb_geometry")