내 세계에서는 다음과 같은 사용자 지정 SRID (Google지도 용)를 사용했습니다.
SELECT * FROM addresses WHERE ST_DWithin(location, ST_SetSRID(ST_MakePoint(longitude, latitude), 3785), radius);
유형이 어디 location
기하학 (포인트, 3785)에, 그리고 longitude
, latitude
한 radius
플로트있다 (예를 들면 -100, 44, 100W / 44N / 30 "단위"는 30 - 아래 참조)
다른 객체의 반경 내에서 모든 객체를 찾는 가장 좋은 방법 은 무엇입니까?를 참조하십시오 . postgis 문서에서 :
이 ST_DWithin(geometry, geometry, distance)
기능은 인덱스 거리 검색을 수행하는 편리한 방법입니다. 거리 반경을 둘러싸기에 충분한 검색 사각형을 만든 다음 색인 된 결과 하위 집합에서 정확한 거리 검색을 수행합니다.
업데이트 : 단위는 SRID 3785의 마일이 아닙니다 ... 라디안 또는도 또는 그와 비슷한 것으로 보입니다. 그러나 내 SRID의 사양에 따르면 단위는 미터 또는도이며 적어도 일부 변환 없이는 아닙니다.
alex=# select * from spatial_ref_sys where srid=3785;
srid | auth_name | auth_srid | srtext | proj4text
3785 | EPSG | 3785 | PROJCS["Popular Visualisation CRS / Mercator (deprecated)",GEOGCS["Popular Visualisation CRS",DATUM["Popular_Visualisation_Datum",SPHEROID["Popular Visualisation Sphere",6378137,0,AUTHORITY["EPSG","7059"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6055"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4055"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3785"],AXIS["X",EAST],AXIS["Y",NORTH]] | +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs