For example I am converting from ECEF to lla using

def ecef_to_lla(x, y, z):
    lla = pyproj.Proj(proj='latlong', ellps='WGS84', datum='WGS84')
    ecef = pyproj.Proj(proj='geocent', ellps='WGS84', datum='WGS84')
    lon, lat, alt = pyproj.transform(ecef, lla, x, y, z)
    return lon, lat, alt

I'm not sure how the ellps and datum keywords differ. Documentation points me here: http://proj4.org/parameters.html#parameter-list but it's still unclear how they differ?

I though a datum was a model of earth, usually an elippsoid with different parameters. So what's the difference between a datum and ellps?

marked as duplicate by whuber Feb 23 '18 at 16:09



In this case, there is not difference. The function is assuming that the ellipsoid (and thus, the datum) is earth-centered, earth-fixed. That is, centered at the earth's center of mass.

Many older datums, soon to be officially called reference frames by the International Standards Organization (ISO), are not ECEF. However, there are a bunch of transformations to convert from these older datums to newer ones using methods that model the differences between the two datums as if they're both ECEF--just using different models. One datum's coordinates are converted to XYZ, there are translation values, plus optional rotation and a scaling to convert to the other's reference frame, at which point you can convert the new XYZ values to latitude,longitude,ellipsoid height in the output reference frame.


I am not an expert but my basic understanding is this:

An ellipsoid is just a 3-dimensional geometric shape, typically defined by "Radius_A" and "Radius_B". The experts may define other parameters, for example the mass - but I don't know.

The "Datum" defines how such ellipsoid has to be shifted and turned (if needed) in order to get best matching on surface of earth in particular region.
