오류 메시지가 부분적으로 만 암시하지만 명령문에 세 가지 문제점이 있습니다. "어디에서 부울 유형이어야 함"은 WHERE에 제공 한 정보가 부울 결과를 평가하지 않음을 의미합니다.
ST_MakeEnvelope 는 다음 순서로 매개 변수를 요청합니다 xmin, ymin, xmax, ymax, srid
.
에 잘못 전달했습니다 ymax, ymin, xmax, xmin, srid
.
부울로 평가해야하는 위치 :
지오메트리와 엔벨로프에 공통 요소가 있는지 판별하려면 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);