How to migrate from EPSG.io to MapTiler Coordinates API
After ten years, the EPSG.io coordinates search and transformation service API is being transitioned to the MapTiler Coordinates API for improved security, scalability, and sustainability. If you would like to read more about EPSG.io, visit the About page, maptiler.com/docs/epsgio, or the GitHub page. This new API requires registration but remains free for non-commercial use. If you want to utilize it for your commercial projects, please subscribe to one of MapTiler Cloud paid plans.
Old endpoints (EPSG.io)
- Search:
https://epsg.io/?q=swiss&format=json
- Transform:
https://epsg.io/trans?data=7.457914,46.948563&s\_srs=4326&t\_srs=2056
New endpoints (MapTiler Coordinates API)
- Search:
https://api.maptiler.com/coordinates/search/swiss.json
- Transform:
https://api.maptiler.com/coordinates/transform/7.457914,46.948563.json?s\_srs=4326&t\_srs=2056
How to migrate to Coordinates API
-
Change the URL from
https://epsg.io
tohttps://api.maptiler.com/coordinates
-
Search: After
search/
, insert your phrase (including spaces and parameters) and add.json
at the end.Examples:
https://api.maptiler.com/coordinates/search/swiss lv95.json
https://api.maptiler.com/coordinates/search/swiss deprecated:* kind:*.json
For more info about
search/
and its parameters, go to the Coordinates API documentation. -
Transform: Give coordinates after
transform/
with coordinate system and transformation parameters after?
. For multiple points, separate the coordinates with;
.Example:
https://api.maptiler.com/coordinates/transform/7.457914,46.948563;7.467914,46.958563.json?s\_srs=4326&t\_srs=2056
For more info about
transform/
and its parameters, go to the Coordinates API Transform Documentation.
Get your API key
Every query to the search or transformation endpoints requires the ?key=YOUR_MAPTILER_API_KEY_HERE
parameter.
Transformation:
https://api.maptiler.com/coordinates/transform/7,46.json?s_srs=4326&t_srs=2056&key=YOUR_MAPTILER_API_KEY_HERE
Search:
https://api.maptiler.com/coordinates/search/swiss.json?key=YOUR_MAPTILER_API_KEY_HERE
To get a MapTiler key, follow the API key guide. The key provides usage statistics and enhances your app’s security. MapTiler ensures privacy protection as outlined in its privacy policy.
How to migrate search with the optional trans
parameter
trans=1
translates into transformations = true
Example:
https://epsg.io/?q=swiss&format=json&trans=1
translates into https://api.maptiler.com/coordinates/search/swiss.json?key=YOUR_MAPTILER_API_KEY_HERE&transformations=true
Changes in search endpoint
Response to the endpoints has changed. The old one looks like this, for the request https://epsg.io/?q=swiss%20lv95&format=json
:
{
"number_result": 1,
"results": [
{
"accuracy": 1,
"area": "Liechtenstein; Switzerland.",
"authority": "EPSG",
"bbox": [
47.81,
5.96,
45.82,
10.49
],
"code": "2056",
"default_trans": 1676,
"kind": "CRS-PROJCRS",
"name": "CH1903+ / LV95",
"proj4": "+proj=somerc +lat_0=46.9524055555556 +lon_0=7.43958333333333 +k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs +type=crs",
"trans": [
1509,
1647,
1676,
8457
],
"unit": "metre",
"wkt": "PROJCS[\"CH1903+ / LV95\",GEOGCS[\"CH1903+\",DATUM[\"CH1903+\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128],TOWGS84[674.374,15.056,405.346,0,0,0,0]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4150\"]],PROJECTION[\"Hotine_Oblique_Mercator_Azimuth_Center\"],PARAMETER[\"latitude_of_center\",46.9524055555556],PARAMETER[\"longitude_of_center\",7.43958333333333],PARAMETER[\"azimuth\",90],PARAMETER[\"rectified_grid_angle\",90],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2600000],PARAMETER[\"false_northing\",1200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2056\"]]"
}
],
"status": "ok"
}
The new one looks like this, for the request https://api.maptiler.com/coordinates/search/swiss lv95.json?exports=true
:
{
"results": [
{
"id": {
"authority": "EPSG",
"code": 2056
},
"kind": "CRS-PROJCRS",
"name": "CH1903+ / LV95",
"exports": {
"proj4": "+proj=somerc +lat_0=46.9524055555556 +lon_0=7.43958333333333 +k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs +type=crs",
"wkt": "PROJCS[\"CH1903+ / LV95\",GEOGCS[\"CH1903+\",DATUM[\"CH1903+\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128],TOWGS84[674.374,15.056,405.346,0,0,0,0]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4150\"]],PROJECTION[\"Hotine_Oblique_Mercator_Azimuth_Center\"],PARAMETER[\"latitude_of_center\",46.9524055555556],PARAMETER[\"longitude_of_center\",7.43958333333333],PARAMETER[\"azimuth\",90],PARAMETER[\"rectified_grid_angle\",90],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2600000],PARAMETER[\"false_northing\",1200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2056\"]]"
},
"unit": "metre",
"accuracy": 1,
"area": "Liechtenstein; Switzerland.",
"bbox": [
5.96,
45.82,
10.49,
47.81
],
"deprecated": false,
"default_transformation": {
"authority": "EPSG",
"code": 1676
},
"transformations": [
1509,
1647,
1676,
8457
]
}
],
"total": 1
}
Key changes
- Renamed
number_result
tototal
- Renamed
default_trans
todefault_transformation
- Renamed
trans
totransformation
- Nested
code
andauthority
intoid:{authority, code}
- Nested default transformation code into
default_transformation:{authority, code}
- The value of
code
is not a string but it is a number - Bounding box list from [Ymax, Xmin, Ymin, Xmax] to [Xmin, Ymin, Xmax, Ymax]
proj4
andwkt
are available only if you pass the parameterexports=true
- Nested in
exports: {proj, wkt}
- Without
exports=true
will beexport:null
- Nested in
- Added
deprecated
(boolean) information - Dropped
status
Changes in transformation endpoint
Selecting particular transformation
Instead of using single “coordinate-system - transformation” value, e.g. 5514 - 15965 value, use the ops
parameter for transformation, e.g. https://api.maptiler.com/coordinates/transform/17,50.json?s_srs=4326&t_srs=5514&ops=15965
.
More details in the Coordinates API Transform Documentation.
Changes in response
Old response to transform one point for the request https://epsg.io/trans?data=17,50&s_srs=4326&t_srs=5514-15965
:
{
"x": "-560595.6992028592",
"y": "-1074706.2565340507",
"z": "0.0"
}
Old response to transform multiple points for the request https://epsg.io/trans?data=17,50;17.1,50.1&s_srs=4326&t_srs=5514-15965
:
[
{
"x": "-560595.6992028592",
"y": "-1074706.2565340507",
"z": "0.0"
},
{
"x": "-552340.3607729311",
"y": "-1064368.376869001",
"z": "0.0"
}
]
New response transforming multiple points for the request https://api.maptiler.com/coordinates/transform/17,50;17.1,50.1.json?s_srs=4326&t_srs=5514&ops=15965)
:
{
"transformer_selection_strategy": "listed",
"results": [
{
"x": -560595.6992028592,
"y": -1074706.2565340507,
"z": 0
},
{
"x": -552340.3607729311,
"y": -1064368.376869001,
"z": 0
}
]
}
Key changes
- Add
transformer_selection_strategy
, see details in https://docs.maptiler.com/cloud/api/coordinates/#TransformResult - Nested results of transformations into `result:[{x1,y1,z1},{x2,y2,z2}]
- Moved from string values to number values
All other endpoints remain unchanged. You can still use and download definitions like Proj4, SQL, or WKT2 using the same links, e.g. https://epsg.io/2056.proj4
, https://epsg.io/5514-1623.sql
, or https://epsg.io/3857.wkt2
. A full list of current definitions can be found in epsg.io/docs.
Support
In case you run into any issues, feel free to contact MapTiler Support.
Related guides
- Automatically created API key
- Check if MapLibre GL JS is supported
- Dataset upload - formats and limits
- Difference between 256x256, 512x512, and HiDPI/Retina rasterized tiles
- Exported Tiles Multiplier
- Generalization in maps
- How are the tile requests cached in web browser?
- How MapTiler map tiles are Generated and Delivered
- How to add Geocoding control to Maplibre GL JS map
- How to add maps to Tableau