Skip to content

Instantly share code, notes, and snippets.

Last active July 3, 2024 12:18
Show Gist options
  • Save springmeyer/871897 to your computer and use it in GitHub Desktop.
Save springmeyer/871897 to your computer and use it in GitHub Desktop.
convert from long/lat to google mercator (or EPSG:4326 to EPSG:900913)
// See for more details.
var degrees2meters = function(lon,lat) {
var x = lon * 20037508.34 / 180;
var y = Math.log(Math.tan((90 + lat) * Math.PI / 360)) / (Math.PI / 180);
y = y * 20037508.34 / 180;
return [x, y]
x= -77.035974
y = 38.898717
// should result in: -8575605.398444, 4707174.018280
Copy link

dikerac commented Mar 22, 2013

I m new in GIS. Result contain metric result like meters, but in google maps, latitude and longitude needs from me.

How does result convert to latitude longitude? Please, can you help this stituation?

Copy link

ghost commented Feb 15, 2014


As would be the inverse function?
Convert EPSG:900913 to EPSG:4326
Anyone know the solution?

Thank you very much for your help.

Copy link

for c/c++ lovers:

#define DEGREE_TO_METER(Y) (log(tan((90.0 + (Y)) * M_PI / 360.0)) / (M_PI / 180.0))*111319.490778
#define DEGREE_TO_METER_REVERSE(Y) (atan(pow(M_E, ((Y)/111319.490778)*M_PI/180.0))*360.0/M_PI-90.0)

Copy link

clarkewd commented Aug 2, 2014

Copy link

mhanoglu commented Nov 7, 2016

Hello how i can convert EPSG:3857 coordinate to EPSG:4326 ?

Copy link

royjkim commented Jan 20, 2017


You may still find the way to convert EPSG:3857 to EPSG:4326, this gonna help you.

Copy link

how to convert from projection to lon/lat ?

Copy link

are there ways to convert a geojson 3857 coords to 4326?
doing it with r and java but cant find a way that would solve the propblem is perfect for single data,
function trans2(){

   var test_x = document.getElementById("test_x").value;
   var test_y = document.getElementById("test_y").value;

   var ll2=new OpenLayers.LonLat(test_x, test_y).transform(
			new OpenLayers.Projection("EPSG:900913"), 
			new OpenLayers.Projection("EPSG:4326")


is cool for java

but would like to know ways to do it in R

Copy link

tylerlittlefield commented Aug 16, 2018


Here's my general workflow for transforming a CRS in R.

With some GIS file (shp, gpkg, etc):

filepath <- system.file("shape/nc.shp", package="sf")
st_read(filepath) %>%
  st_set_crs(4326) %>% 

With a CSV:

df <- read.csv("some_csv.csv")
df %>% 
  st_as_sf(coords = c("lat_col", "lng_col")) %>% 
  st_set_crs(4326) %>% 

Copy link

Thank you so much! It was really helpful.

Copy link

rendrom commented Mar 7, 2020

console.log(degrees2meters(-180,-90)) //  [-20037508.34, -Infinity]

Copy link

Us77 commented Mar 24, 2020

Can you please help with converting meters to lat long?

Copy link

kb173 commented Apr 14, 2020


The C++ macro posted above works well for converting meters to lat/long degrees: #define DEGREE_TO_METER_REVERSE(Y) (atan(pow(M_E, ((Y)/111319.490778)*M_PI/180.0))*360.0/M_PI-90.0) (Thanks @jiangfeng79!)

Should be trivial to adapt to Python.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment