1

PostGIS(1.5.4)データの使用に問題があります。私はこのテクノロジーに精通していないため、明らかなことを理解できない可能性があります(私は、4時間近くの経験を持つ定期的な専門家です)が、Googleでは解決できないエラーが発生しています。

ポリゴンデータを含むテーブルがあります(はい、チェックしました。列タイプはジオメトリであり、ポリゴンではなく、Postgresネイティブタイプです)。この問題は、テーブルに対してクエリを実行して、特定の問題が含まれている図形を見つけようとしたときに発生します。

私は次のクエリを使用しています:

SELECT * 
FROM geo_shape 
WHERE ST_Contains(geoshp_polygon, POINT(-97.4388046000, 38.1112251000));

私が受け取るエラーは「エラー:関数st_contains(geometry、point)が存在しません」です。CAST()関数を使用しようとしましたが、「エラー:タイプジオメトリをポリゴンにキャストできません」というメッセージが表示されました。問題はデータの保存方法に関係していると思います-PGAdminはそれを16進データとして表示します。ちょっとだけ使ってみST_GeomFromHEXEWKB()ましたが、「エラー:関数st_geomfromhexewkb(geometry)が存在しません」と表示されました。

ここでの問題についてはかなり混乱しているので、どんなアイデアでも大歓迎です。

4

2 に答える 2

2

st_containsには、引数としてgeom、geomが必要です。

これを試してみてください...

SELECT * FROM geo_shape 
WHERE ST_Contains(geoshp_polygon,
      GeomFromText('POINT(-97.4388046000 38.1112251000)'));

修正するために編集され、ポイントデータで発行されます。ST_geomfromtextは機能しますが、違いは何ですか。

于 2012-07-03T21:49:54.267 に答える
2

PostgreSQLのジオメトリデータ型とPostGISのジオメトリタイプを混在させることはできません。そのため、このエラーが表示されます。PostGISのジオメトリコンストラクターの1つを使用して支援することをお勧めします:

SELECT * 
FROM geo_shape 
WHERE ST_Contains(geoshp_polygon,
                  ST_SetSRID(ST_MakePoint(-97.4388046000, 38.1112251000),4326);

または、非常に簡単なテキストの方法は、よく知られているテキストをつなぎ合わせることです。

SELECT 'SRID=4326;POINT(-97.4388046000 38.1112251000)'::geometry AS geom;

(これにより、ジオメトリタイプのWKBが出力されます)。

于 2012-07-04T03:44:30.710 に答える