In meiner Welt funktionierte mit einer benutzerdefinierten SRID (für Google Maps) Folgendes:
SELECT * FROM addresses WHERE ST_DWithin(location, ST_SetSRID(ST_MakePoint(longitude, latitude), 3785), radius);
wobei der Typ location
eine Geometrie ist (Punkt, 3785), und longitude
, latitude
und radius
Schwimmer sind (zB -100, 44, 30 für 100W / 44N / 30 "Einheiten" - siehe unten)
Siehe Was ist der beste Weg, um alle Objekte innerhalb eines Radius eines anderen Objekts zu finden? In den Postgis-Dokumenten:
Die ST_DWithin(geometry, geometry, distance)
Funktion ist eine praktische Möglichkeit, eine indizierte Entfernungssuche durchzuführen. Dazu wird ein Suchrechteck erstellt, das groß genug ist, um den Entfernungsradius einzuschließen. Anschließend wird eine exakte Entfernungssuche für die indizierte Teilmenge der Ergebnisse durchgeführt.
UPDATE: Einheiten sind keine Meilen für SRID 3785 ... sie scheinen entweder Bogenmaß oder Grad oder so ähnlich zu sein. Die Spezifikation für meine SRID besagt jedoch, dass die Einheiten entweder Meter oder Grad sind und definitiv keine von diesen Einheiten, zumindest nicht ohne eine gewisse Umrechnung:
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