EPSG 3857 or 4326 for GoogleMaps, OpenStreetMap and Leaflet

  • The discussion at What is the difference between WGS84 and EPSG4326? shows that 4326 is just the EPSG identifier of WGS84..

    Wikipedia entries for Google Maps and OpenStreetMap shows that they both use WGS 84.

    http://wiki.openstreetmap.org/wiki/EPSG:3857 states that

    EPSG:3857 is a Spherical Mercator projection coordinate system popularized by web services such as Google and later OpenStreetMap.

    Leaflet's help states:

    EPSG3857 The most common CRS for online maps, used by almost all free and commercial tile providers. Uses Spherical Mercator projection. Set in by default in Map's crs option.|

    EPSG4326 A common CRS among GIS enthusiasts. Uses simple Equirectangular projection.

    This is confusing - it seems that Google Maps and OpenStreetMap use EPSG3857 but they use WGS84 which 'is' EPSG4326. Something can't be right here, most likely my understanding.

    Could someone help me understand?

  • There are a few things that you are mixing up.

    • Google Earth is in a Geographic coordinate system with the wgs84 datum. (EPSG: 4326)

    • Google Maps is in a projected coordinate system that is based on the wgs84 datum. (EPSG 3857)

    • The data in Open Street Map database is stored in a gcs with units decimal degrees & datum of wgs84. (EPSG: 4326)

    • The Open Street Map tiles and the WMS webservice, are in the projected coordinate system that is based on the wgs84 datum. (EPSG 3857)

    So if you are making a web map, which uses the tiles from Google Maps or tiles from the Open Street Map webservice, they will be in Sperical Mercator (EPSG 3857 or srid: 900913) and hence your map has to have the same projection.


    I'll like to expand the point raised by mkennedy

    All of this further confused by that fact that often even though the map is in Web Mercator(EPSG: 3857), the actual coordinates used are in lat-long (EPSG: 4326). This convention is used in many places, such as:

    • In Most Mapping API,s You can give the coordinates in Lat-long, and the API automatically transforms it to the appropriate Web Mercator coordinates.
    • While Making a KML, you will always give the coordinates in geographic Lat-long, even though it might be showed on top of a web Mercator map.
    • Most mobile mapping Libraries use lat-long for position, while the map is in web Mercator.

    Just to add, EPSG:3857 calls its units metres, but they are not real metres. The more to the north you come, the more squeezed they are.

    What's also confusing is that you often interact with Google Maps or Bing Maps using EPSG: 4326, for instance in KML files. Internally the servers convert the data to their equivalent of EPSG: 3857. If you're mashing up data against one of their tiles, the tile is using EPSG: 3857 so it's faster for you to convert your data to that first.

    Does this mean that when calculating the projection values, it is safe to use OSM for Google Maps? Such as converting lat to y: http://wiki.openstreetmap.org/wiki/Mercator#Spherical_Mercator

    @brendan: Yes. you can use the same coordinates for OSM, as well as Google Maps (as well as many others including Bing, here etc.)

    When pushing EPSG:4326 GeoJSON data to Leaflet, the API is transforming automatically my data to EPSG:3857?

    @EtienneDesgagné: Yes

    I will also add, that EPSG:3857 projection is mostly useful only because it can somewhat usefully DISPLAY entire world at once. And distance/area measurements done in this projection are way off, especially when you go further to the north.

    @DevdattaTengshe - I started working on a web mapping application and noticed all the map services with layers such as building footprints or geographic boundaries etc. (from ArcGIS Server) are published in EPSG: 4326. The application is build on Leaflet API. The application is also using base maps (Bing and ESRI) which is EPSG:3857. I just started looking at replacing ESRI services with Geoserver WMS and WFS and Bing map with Goggle map. So will Leaflet API be transforming the data again to EPSG:3857? or should I change the projection of services from 4326 to 3857?

    @Deep: I'll suggest that you post a new question with as much detail as possible, so that you get a proper answer

    To add some more bits that I think are useful. When building web applications using OpenLayers, when trying to specify different ESPGs the thing simply didn't work. Getting your tables in EPSG 3857 is simply the best way to go

License under CC-BY-SA with attribution

Content dated before 6/26/2020 9:53 AM