위도 / 경도 경계 상자로 PostGIS 선택


18

지도에 그려진 상자에서 minLat, minLong, maxLat 및 maxLong이 있습니다. 현재 상자의 모든 점을 얻는 쿼리는 다음과 같습니다.

SELECT *
FROM geomTable
WHERE (longitude BETWEEN minLon AND maxLon)
AND (latitude BETWEEN minLat AND maxLat)

위도 / 경도 열 대신 형상 열을 사용하여 결과를 얻고 싶습니다. 나는이 쿼리를 시도했다 :

SELECT *
FROM mytable
WHERE mytable.geom && ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326);

이 게시물에서 : postgis를 사용하여 경계 상자를 선택 하지만 결과가 반환되지 않습니다.

누구나 postgis의 지오메트리를 사용하여 최소 및 최대 위도 / 경도로 만든 상자 내의 모든 점을 선택하는 방법에 대한 예가 있습니까?


사용중인 PostGIS 버전은 무엇입니까?
Mapperz

내 PostGIS는 버전 2.0.1입니다.
bl8rchk 16:14의

2
두 SRm 열이 동일한 SRID에 있습니까?
nickves

내 접근 방식으로 벗어날 수 있다고 생각합니다 ... 기하 열은 하나뿐입니다. SRID는 2223입니다.
bl8rchk 16:14에

@ bl8rchk 테이블 geomTable과 필드는 mytable.geom무엇입니까?
theartofbeing 2012 년

답변:


16

데이터가 위도 / 경도가 아니므로 상자를 데이터의 좌표 공간으로 밀어야합니다.

SELECT *
FROM mytable
WHERE 
  mytable.geom && 
  ST_Transform(ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326), 2223);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.