我已使用 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。
答案 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")