Convert distance from meters to EPSG 3857

I need to convert distance from meters to units of EPSG 3857 in PostGIS. This is important for me to calculate a radius for ST_DWITHIN as I'm dealing with geometries. How can I do this?

As an approximation suitable for medium-small radii, use thecos()of the latitude to scale up the true distance to a "distance" that makes sense for your latitude in web mercator, as described here.

SELECT * FROM mytable WHERE ST_DWithin( ST_Transform(ST_SetSRID(ST_MakePoint(%lon, %lat), 4326), 3857), the_geom_webmercator, %radius / cos(%lat * pi()/180) );

You only want to do this for small/medium radii because the scaling only makes sense at one latitude. The further you get from your reference latitude, the more wrong your radius gets. If you want a "perfect" result, you could pair this approach with a test onST_DistanceSpheroid()to pare the results down to items exactly within the radius.

Watch the video: Conversion Distance Scales ., meters m to light year ly (October 2021).