0

I am trying to convert from EPSG 3875 to EPSG 4326 and have this code:

from pyproj import Proj, transform

def convert_coordinates(input_format, output_format, x, y):

    input_format = "+init=epsg:" +str(input_format)
    output_format = "+init=epsg:" +str(output_format)

    inProj = Proj(input_format)
    outProj = Proj(output_format)

    return transform(inProj,outProj,x,y)

x, y = 4152144, 219039
x2,y2 = convert_coordinates("3875", "4326", x, y)
print x2, y2

This returns 112.264404642 154.392043378 which is out of bounds for EPSG 4326. But ArcGIS returns 37.2993441706517, 1.96727415792103 which is in bounds and looks better.

Is there anything obviously wrong with this code?

2
  • perhaps double check the epsg codes. You could also try this syntax: Proj(init="epsg:3875")
    – songololo
    Commented Oct 29, 2015 at 16:14
  • Swap your x and y values. AKA I think pyproj wants x = easting and y = northing.
    – mkennedy
    Commented Oct 29, 2015 at 17:06

1 Answer 1

2

The correct procedure is

from pyproj import Proj, transform
inProj  = Proj("+init=EPSG:3857"))
outProj = Proj("+init=EPSG:4326")
x, y = 4152144, 219039
print transform(inProj,outProj,x,y)
(37.29934417065166, 1.96727415792103)

Your error is convert_coordinates("3875", "4326", x, y): 3875 and 4326 are simple strings and not PyProj projections

Look at pyProj Coordinate Transformation Incorrect

1
  • Awesome answer! That fixed it.
    – e h
    Commented Oct 29, 2015 at 17:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.