0

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")

エラー

エラー: 解析エラー - 無効なジオメトリ
LINE 1: ... parcel WHERE parcelno < 50 AND ST_Intersects(((E'\001\0... HINT: "\0" <-- ジオメトリ内の位置 2 で解析エラー

エラー: 解析エラー - 無効なジオメトリ
SQL 状態: XX000
ヒント: "\0" <-- ジオメトリ内の位置 2 でエラーを解析
文字: 245

フロントエンドで SharpMap を使用しています。

4

1 に答える 1

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")
于 2016-09-12T08:19:20.633 に答える