エラーメッセージはその一部のみを暗示していますが、ステートメントには3つの問題があります...
ST_MakeEnvelopeは、次の順序でパラメーターを要求しますxmin, ymin, xmax, ymax, srid
。
を間違って渡しましたymax, ymin, xmax, xmin, srid
。
WHEREはブール値に評価する必要があります。
ジオメトリとエンベロープに共通の要素があるかどうかを判断するには、次のようにWHEREを構築する必要がありWHERE geom && envelope_geom
ます。それ以外の場合は、ST_Containsを使用できます
ジオメトリがエンベロープ内に含まれているかどうかを確認するには: `WHERE ST_Contains(envelope_geom、geom)
の比較方法を指定しませんでしたWHERE
。
テーブル「planet_osm_ways」にはジオメトリ列は含まれませんが、「planet_osm_roads」には「way」という名前のジオメトリ列が含まれます。
関連するplanet_osm_nodes.latおよびplanet_osm_nodes.lonからテーブル「planet_osm_ways」にジオメトリ列を作成できます。
「planet_osm_roads」を使用して、ジオメトリ列を持つテーブルに対してバウンディングボックスを使用する方法を示します。
SELECT *
FROM planet_osm_roads
WHERE planet_osm_roads.way && ST_Transform(
ST_MakeEnvelope(-122.271189, 37.804339, -122.275244, 37.808264,
4326),3857
);
またはこれに変更します:
SELECT *
FROM planet_osm_roads
WHERE ST_Contains(
ST_Transform(
ST_MakeEnvelope(-122.271189, 37.804339, -122.275244, 37.808264,
4326)
,3857)
,planet_osm_roads.way);