<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Gis on Visualizing.JP</title>
        <link>https://visualizing.jp/en/tags/gis/</link>
        <description>Recent content in Gis on Visualizing.JP</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-US</language>
        <copyright>Yuichi Yazaki</copyright>
        <lastBuildDate>Sun, 16 Nov 2025 00:00:00 +0900</lastBuildDate><atom:link href="https://visualizing.jp/en/tags/gis/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Why Web Map Data Sometimes Mentions EPSG:4326 and Sometimes EPSG:3857</title>
        <link>https://visualizing.jp/en/epsg-4326-3857/</link>
        <pubDate>Sun, 16 Nov 2025 00:00:00 +0900</pubDate>
        
        <guid>https://visualizing.jp/en/epsg-4326-3857/</guid>
        <description>&lt;img src="https://visualizing.jp/epsg-4326-3857/images/epsg.png" alt="Featured image of post Why Web Map Data Sometimes Mentions EPSG:4326 and Sometimes EPSG:3857" /&gt;&lt;p&gt;An &lt;a class=&#34;link&#34; href=&#34;https://epsg.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EPSG code&lt;/a&gt; is an identifier assigned to coordinate reference systems, datums, projections, and related geospatial definitions. It tells software which coordinate system a geographic dataset uses.&lt;/p&gt;
&lt;p&gt;Web mapping has a common source of confusion:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Should data for a web map be EPSG:4326, or EPSG:3857?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Documentation for Foursquare, Google Maps, Mapbox, MapLibre, Kepler.gl, Cesium, QGIS, and ArcGIS can appear to say different things. The reason is that there are two different uses of coordinates: input data and map rendering or tiles.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;User-uploaded data should generally be in &lt;strong&gt;EPSG:4326&lt;/strong&gt;.&lt;br&gt;
Map tiles and rendering often use &lt;strong&gt;EPSG:3857&lt;/strong&gt; internally.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Input data layer -&amp;gt; EPSG:4326&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Map tile and rendering layer -&amp;gt; EPSG:3857&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Many people get confused because documentation may describe different layers of the system.&lt;/p&gt;
&lt;p&gt;GIS tools such as QGIS and ArcGIS can handle many projections, so they are outside the main scope of this simplified web-map explanation.&lt;/p&gt;
&lt;h2 id=&#34;geojson-is-fixed-to-wgs84-longitudelatitude&#34;&gt;GeoJSON Is Fixed to WGS84 Longitude/Latitude
&lt;/h2&gt;&lt;p&gt;The GeoJSON specification, RFC 7946, states that coordinates must be in WGS84 longitude and latitude. In practice, this means EPSG:4326.&lt;/p&gt;
&lt;p&gt;Therefore, web mapping tools that accept GeoJSON generally assume input data in EPSG:4326. This is true across MapLibre, Mapbox, Kepler.gl, Cesium, Google Maps, and OpenLayers.&lt;/p&gt;
&lt;h2 id=&#34;map-tiles-use-epsg3857&#34;&gt;Map Tiles Use EPSG:3857
&lt;/h2&gt;&lt;p&gt;Google Maps popularized Web Mercator, EPSG:3857, and the web tile system based on &lt;code&gt;z/x/y&lt;/code&gt; coordinates. OpenStreetMap, Mapbox Vector Tile, and many other web map systems follow this convention.&lt;/p&gt;
&lt;p&gt;In other words, map tiles are usually in 3857 even though the data you upload is 4326.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note on Cesium:&lt;/strong&gt; Cesium accepts EPSG:4326-style longitude and latitude input, but rendering uses Earth-Centered, Earth-Fixed coordinates, EPSG:4978. The structure is still the same: input and rendering coordinates are different.&lt;/p&gt;
&lt;h2 id=&#34;internal-processing&#34;&gt;Internal Processing
&lt;/h2&gt;&lt;p&gt;A typical web map pipeline looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;User data in EPSG:4326 longitude and latitude.&lt;/li&gt;
&lt;li&gt;The map engine projects the data internally.&lt;/li&gt;
&lt;li&gt;The display is aligned to the tile/rendering coordinate system, usually EPSG:3857.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So documentation that says &amp;ldquo;4326&amp;rdquo; may be correct for input, while documentation that says &amp;ldquo;3857&amp;rdquo; may be correct for tiles or rendering.&lt;/p&gt;
&lt;h2 id=&#34;does-any-tool-require-epsg3857-as-input&#34;&gt;Does Any Tool Require EPSG:3857 as Input?
&lt;/h2&gt;&lt;p&gt;Almost none, if by &amp;ldquo;input&amp;rdquo; we mean ordinary user data such as GeoJSON. The main exception is vector tile generation. When data is being prepared as map tiles, then EPSG:3857 becomes relevant.&lt;/p&gt;
&lt;p&gt;Do not confuse ordinary web map upload data with GIS servers or OGC services such as WMS and WMTS. Those systems can support many projections and have different design goals.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Method&lt;/th&gt;
          &lt;th&gt;Role&lt;/th&gt;
          &lt;th&gt;Projection&lt;/th&gt;
          &lt;th&gt;Feature&lt;/th&gt;
          &lt;th&gt;Typical use&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Map tiles / XYZ tiles&lt;/td&gt;
          &lt;td&gt;De facto web map tile delivery&lt;/td&gt;
          &lt;td&gt;Usually EPSG:3857&lt;/td&gt;
          &lt;td&gt;Fast, cacheable, compatible with Google Maps and OSM&lt;/td&gt;
          &lt;td&gt;Web maps, apps, MapLibre, Mapbox, Kepler&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GIS server&lt;/td&gt;
          &lt;td&gt;GIS-oriented map delivery&lt;/td&gt;
          &lt;td&gt;Flexible&lt;/td&gt;
          &lt;td&gt;Supports WMS, WMTS, tiles, analysis workflows&lt;/td&gt;
          &lt;td&gt;Government GIS, surveying, business systems&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;WMS / WMTS&lt;/td&gt;
          &lt;td&gt;OGC standard services&lt;/td&gt;
          &lt;td&gt;Flexible&lt;/td&gt;
          &lt;td&gt;More projection flexibility than web tiles&lt;/td&gt;
          &lt;td&gt;Public GIS and precision-oriented systems&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Misunderstanding&lt;/th&gt;
          &lt;th&gt;Cause&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&amp;ldquo;I do not know which EPSG to upload.&amp;rdquo;&lt;/td&gt;
          &lt;td&gt;Input coordinates and rendering coordinates are mixed up.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&amp;ldquo;Google Maps mentions both 4326 and 3857.&amp;rdquo;&lt;/td&gt;
          &lt;td&gt;One refers to input data; the other to tiles.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&amp;ldquo;MapLibre renders in 3857, so should input be 3857?&amp;rdquo;&lt;/td&gt;
          &lt;td&gt;GeoJSON input is still based on 4326.&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For ordinary web map data, prepare longitude and latitude in EPSG:4326. Let the map engine project it for display.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.rfc-editor.org/rfc/rfc7946&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RFC 7946 GeoJSON Specification&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://developers.google.com/maps/documentation/javascript/coordinates&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Maps JavaScript API - Coordinates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://wiki.openstreetmap.org/wiki/Web_Mercator&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenStreetMap Wiki - Web Mercator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mapbox/vector-tile-spec&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mapbox Vector Tile Spec&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://cesium.com/docs/tutorials/geometry-and-appearance/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cesium Documentation - Geometry and Appearance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
        </item>
        
    </channel>
</rss>
