#webmercator
Hur ser vår ömtåliga och sårbara jord ut? Och hur behandlar och vårdar vi den? www.reddit.com/r/dataisbeau...
From the dataisbeautiful community on Reddit: [OC] EqualEarth vs WebMercator
Explore this post and more from the dataisbeautiful community
www.reddit.com
September 8, 2026 at 7:03 AM
Nice feedback, thanks! Regarding geodesic, the measurements are already geodesic for WebMercator and any geographic spatial references (eg WG84), and planar for any projected coordinate system (except for WebMercator). And sketch tooltip distances/lengths are handled the same way as well.
March 25, 2025 at 4:17 PM
Maps don’t have to distort reality! 🌏
Modern projections like Equal Earth, Robinson, and Winkel Tripel show countries in their true proportions, giving a balanced view of the planet without sacrificing readability or usability.
Read on: map-shop.co.uk/time-to-move...
#WorldMaps #WebMercator
Time to Move Beyond Web Mercator | MapShop
Most of us use digital maps every day without a second thought. Platforms like Google Maps, Apple Maps, Bing Maps and OpenStreetMap have become part of daily life. But there is a hidden issue that sha...
map-shop.co.uk
November 13, 2025 at 12:11 PM
Mapproxy source from WMTS bounding box issue
I am trying to create an offline version from here: https://wmts.maptiler.com/aHR0cHM6Ly9ubHMudGlsZXNlcnZlci5jb20vZnBzVVpieHRndGtuL2luZGV4Lmpzb24/wmts and here is my current config: services: demo: wms: md: title: OS 10k 1888 tms: origin: 'nw' layers: - name: osgb10k1888 title: OS 10k 1888 sources: [osgb10k1888_cache] caches: osgb10k1888_cache: sources: [osgb10k1888_wmts] grids: [webmercator] sources: osgb10k1888_wmts: type: tile grid: webmercator url: https://nls-0.tileserver.com/fpsUZbxtgtkn/%(z)s/%(x)s/%(y)s.jpg grids: webmercator: base: GLOBAL_WEBMERCATOR This all seems to work fine with the resulting levels and resolutions matching the source correct: Level and Resolutions Level Resolution 0 78271.51696402048 1 39135.75848201024 2 19567.87924100512 3 9783.93962050256 4 4891.96981025128 5 2445.98490512564 6 1222.99245256282 7 611.49622628141 8 305.748113140705 9 152.8740565703525 10 76.43702828517625 11 38.21851414258813 12 19.109257071294063 13 9.554628535647032 14 4.777314267823516 15 2.388657133911758 16 1.194328566955879 17 0.5971642834779395 18 0.29858214173896974 however the resulting bounding box is: -20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244 I have tried adding the bbox to the grid based on the source: -7.793077 49.852539 1.790425 60.894042 but this the screws up all the resolutions and causes the map to be misaligned do i need to add all the res into the grid and specify the coords instead of using the web global default?
gis.stackexchange.com
August 9, 2026 at 4:05 AM
Fantastic demo at today's #Esri Virtual Dev Summit of a javascript web application using the #Spilhaus projected coordinate system and resulting map (no more #WebMercator). Demo featured the Ecological Marine Units data which can be freely accessed at https://arcg.is/1rjXLr
November 8, 2024 at 1:38 PM
My colleague Andrew Skinner from ArcGIS @LivingAtlas team shares how to create your own basemap in popular alternatives to the ubiquitous and dreaded #WebMercator....
November 7, 2024 at 11:19 PM
webmercator nigdzie nie pójdzie
November 13, 2025 at 11:04 PM
Most digital maps like Google & Apple use the Web Mercator projection. It’s convenient for navigation, but it massively distorts the world: Greenland looks as big as Africa. 🌍

It’s time to see the world as it truly is.
👉 map-shop.co.uk/time-to-move...

#MapShop #Cartography #WorldMaps #WebMercator
Time to Move Beyond Web Mercator - MapShop
Most of us use digital maps every day without a second thought. Platforms like Google Maps, Apple Maps, Bing Maps and OpenStreetMap have become part of daily life. But there is a hidden issue that sha...
map-shop.co.uk
November 4, 2025 at 12:31 PM
学生たちに課題として出したウェブメルカトル投影されたXYZタイルの世界地図を地球儀に戻す逆投影変換について NotebookLM に解説してもらいました。なかなか良いコメントしてくれています。これがヒントになってくれるとうれしい。
youtu.be/M0QhcGnAKHg

#WebMercator #Projection #Globe #FuruhashiLab #古橋研究室 #AoyamaGSC #青学
October 27, 2025 at 1:15 PM
@maplibre.org expects geojson to be EPSG:4326, only to transform it to WebMercator (3857) … 🪦
March 7, 2025 at 1:13 PM
Mapproxy source from WMTS bounding box issue
I am trying to create an offline version from here: https://wmts.maptiler.com/aHR0cHM6Ly9ubHMudGlsZXNlcnZlci5jb20vZnBzVVpieHRndGtuL2luZGV4Lmpzb24/wmts and here is my current config: services: demo: wms: md: title: OS 10k 1888 tms: origin: 'nw' layers: - name: osgb10k1888 title: OS 10k 1888 sources: [osgb10k1888_cache] caches: osgb10k1888_cache: sources: [osgb10k1888_wmts] grids: [webmercator] sources: osgb10k1888_wmts: type: tile grid: webmercator url: https://nls-0.tileserver.com/fpsUZbxtgtkn/%(z)s/%(x)s/%(y)s.jpg grids: webmercator: base: GLOBAL_WEBMERCATOR This all seems to work fine with the resulting levels and resolutions matching the source correct: Level and Resolutions Level Resolution 0 78271.51696402048 1 39135.75848201024 2 19567.87924100512 3 9783.93962050256 4 4891.96981025128 5 2445.98490512564 6 1222.99245256282 7 611.49622628141 8 305.748113140705 9 152.8740565703525 10 76.43702828517625 11 38.21851414258813 12 19.109257071294063 13 9.554628535647032 14 4.777314267823516 15 2.388657133911758 16 1.194328566955879 17 0.5971642834779395 18 0.29858214173896974 however the resulting bounding box is: -20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244 I have tried adding the bbox to the grid based on the source: -7.793077 49.852539 1.790425 60.894042 but this the screws up all the resolutions and causes the map to be misaligned do i need to add all the res into the grid and specify the coords instead of using the web global default?
gis.stackexchange.com
April 10, 2026 at 10:12 AM
Mapproxy source from WMTS bounding box issue
I am trying to create an offline version from here: https://wmts.maptiler.com/aHR0cHM6Ly9ubHMudGlsZXNlcnZlci5jb20vZnBzVVpieHRndGtuL2luZGV4Lmpzb24/wmts and here is my current config: services: demo: wms: md: title: OS 10k 1888 tms: origin: 'nw' layers: - name: osgb10k1888 title: OS 10k 1888 sources: [osgb10k1888_cache] caches: osgb10k1888_cache: sources: [osgb10k1888_wmts] grids: [webmercator] sources: osgb10k1888_wmts: type: tile grid: webmercator url: https://nls-0.tileserver.com/fpsUZbxtgtkn/%(z)s/%(x)s/%(y)s.jpg grids: webmercator: base: GLOBAL_WEBMERCATOR This all seems to work fine with the resulting levels and resolutions matching the source correct: Level and Resolutions Level Resolution 0 78271.51696402048 1 39135.75848201024 2 19567.87924100512 3 9783.93962050256 4 4891.96981025128 5 2445.98490512564 6 1222.99245256282 7 611.49622628141 8 305.748113140705 9 152.8740565703525 10 76.43702828517625 11 38.21851414258813 12 19.109257071294063 13 9.554628535647032 14 4.777314267823516 15 2.388657133911758 16 1.194328566955879 17 0.5971642834779395 18 0.29858214173896974 however the resulting bounding box is: -20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244 I have tried adding the bbox to the grid based on the source: -7.793077 49.852539 1.790425 60.894042 but this the screws up all the resolutions and causes the map to be misaligned do i need to add all the res into the grid and specify the coords instead of using the web global default?
gis.stackexchange.com
December 9, 2025 at 12:06 PM
Why does gdal.Warp create a black region on the sides of some rasters when it reprojects and cuts them?
I have a JPEG of a red square, example.jpeg. I use it as webmercator tile 6/36/16. I georeference it accordingly, using the bounds of 6/36/16 (I calculated them like this – details are irrelevant to this question). from osgeo import gdal translate_options = gdal.TranslateOptions( format="JPEG", outputSRS="epsg:3857", outputBounds=[2504688.542848653, 10018754.171394624, 3130860.6785608167, 9392582.035682458], # bounds of 6/36/16 ) dataset = gdal.Open("example.jpeg") gdal.Translate( "georeferenced-example.jpeg", dataset, options=translate_options, dstAlpha=True ) The resulting georeferenced-example.jpeg and the bounds of 6/36/16 can be nicely visualised in QGIS, they show up as expected (tile bounds visualized using merqantile plugin): Above, project CRS is EPSG:3857. I change it to EPSG:25835, and compute a polygon which is a rectangle on the EPSG:25835 plane, it's southern points are fully within 6/36/16. The polygon I got, expressed as a WKT string, in EPSG:25835, is: POLYGON ((550029.437880352 7123480.5827719355, 550029.437880352 7377571.912471594, 300013.9297573397 7377571.912471594, 300013.9297573397 7123480.5827719355, 550029.437880352 7123480.5827719355)) (This is how I came up with the above WKT – details are irrelevant to this question.) QGIS visualisation, WKT is the blue line: Based on the above QGIS view, if I reproject georeferenced-example.jpeg from EPSG:3857 to EPSG:25835 and cut it using the blue polygon, then I will get a fully red raster. I do just that: input_ds = gdal.Open("georeferenced-example.jpeg") warp_options = gdal.WarpOptions( format="JPEG", cropToCutline=True, dstSRS="EPSG:25835", cutlineWKT="POLYGON ((550029.437880352 7123480.5827719355, 550029.437880352 7377571.912471594, 300013.9297573397 7377571.912471594, 300013.9297573397 7123480.5827719355, 550029.437880352 7123480.5827719355))", cutlineSRS="EPSG:25835", resampleAlg="cubic", warpOptions={"CUTLINE_ALL_TOUCHED": True}, ) gdal.Warp("warped.jpeg", input_ds, options=warp_options) I get (for full resolution, see this): As you can see, there is a black line on the bottom. It's not an entirely straight line: The black line is unexpected, since the bottom side of the blue polygon is fully within the red area in QGIS. It should not be nodata, or anything like that: the entire bottom area should be red. Interestingly, this effect is less and less prominent as I start with deeper and deeper zooms. If I repeat the above workflow, but start with assuming that the red square is the 7/72/32 tile (one can easily do that by running python3 mre.py 7 72 32 – mre.py is available here, a Dockerfile helpful for setting up an environment with the necessary dependencies is available here), then I get a thinner black line. 7/72/32 (full resolution here): 8/145/65 (full resolution here): Black line is significantly smaller. By zoom level 12, it's not there. 12/2322/1043 (full resolution here): If I go to lower zoom levels, the effect is even more prominent. 3/4/2 (full resolution here): After inspecting georeferenced-example.jpeg and the WKT used to cut it in QGIS in this particular case, the arch on the above is understandable. However, it is still not clear to me where did the black line on the bottom (and on the sides) came from. Why does gdal.Warp create a black region on the sides of some rasters when it reprojects and cuts them, even though based on QGIS visualisations, this is unexpected? In other words: if the cutline is fully within the entirely red rasters I am cutting, why do I end up with non-red sides?
gis.stackexchange.com
November 15, 2025 at 2:31 PM
Mapproxy source from WMTS bounding box issue
I am trying to create an offline version from here: https://wmts.maptiler.com/aHR0cHM6Ly9ubHMudGlsZXNlcnZlci5jb20vZnBzVVpieHRndGtuL2luZGV4Lmpzb24/wmts and here is my current config: services: demo: wms: md: title: OS 10k 1888 tms: origin: 'nw' layers: - name: osgb10k1888 title: OS 10k 1888 sources: [osgb10k1888_cache] caches: osgb10k1888_cache: sources: [osgb10k1888_wmts] grids: [webmercator] sources: osgb10k1888_wmts: type: tile grid: webmercator url: https://nls-0.tileserver.com/fpsUZbxtgtkn/%(z)s/%(x)s/%(y)s.jpg grids: webmercator: base: GLOBAL_WEBMERCATOR This all seems to work fine with the resulting levels and resolutions matching the source correct: Level and Resolutions Level Resolution 0 78271.51696402048 1 39135.75848201024 2 19567.87924100512 3 9783.93962050256 4 4891.96981025128 5 2445.98490512564 6 1222.99245256282 7 611.49622628141 8 305.748113140705 9 152.8740565703525 10 76.43702828517625 11 38.21851414258813 12 19.109257071294063 13 9.554628535647032 14 4.777314267823516 15 2.388657133911758 16 1.194328566955879 17 0.5971642834779395 18 0.29858214173896974 however the resulting bounding box is: -20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244 I have tried adding the bbox to the grid based on the source: -7.793077 49.852539 1.790425 60.894042 but this the screws up all the resolutions and causes the map to be misaligned do i need to add all the res into the grid and specify the coords instead of using the web global default?
gis.stackexchange.com
August 9, 2025 at 3:10 PM
How do I reproject rasters using rasterio to get the same result as gdalwarp is producing?
I am trying to reproject a georeferenced raster using rasterio. I get a different result than what GDAL gives me. I think I am using rasterio wrong. Reproducible example Input preparation Download two webmercator tiles: 12_2169_1191.jpeg and 12_2169_1192.jpeg. Merge them: ffmpeg -i 12_2169_1191.jpeg -i 12_2169_1192.jpeg -filter_complex vstack=inputs=2 src.jpeg Get src.jpeg: Georeference it (bound values from here): gdal_translate -of GTiff \ -a_ullr 1183856.69408081 8384836.25477069 1193640.63370131 8365268.37552969 \ -a_srs EPSG:3857 src.jpeg src.tiff Check that src.tiff shows up nicely in QGIS (it does): Reproject using GDAL Target CRS is EPSG:25832, so: gdalwarp -t_srs EPSG:25832 src.tiff gdalwarp_dst_25832.tiff Reprojection with the same results using rasterio? The best, still not working rasterio code I have been able to come up with as an equivalent to the above gdalwarp line: import rasterio.warp import rasterio default_tranform, default_width, default_height = ( rasterio.warp.calculate_default_transform( {"init": "EPSG:3857"}, {"init": "EPSG:25832"}, 256, 512, left=1183856.69408081, right=1193640.63370131, bottom=8365268.37552969, top=8384836.25477069, ) ) dst_meta = { "crs": rasterio.crs.CRS.from_string("EPSG:25832"), "transform": default_tranform, "width": default_width, "height": default_height, "count": 1, "dtype": rasterio.float32, "driver": "GTiff", } with rasterio.open("rasterio_dst_25832.tiff","w",**dst_meta) as dst: with rasterio.open("src.tiff","r") as src: dst.write(src.read(1),indexes=1) Problem rasterio_dst_25832.tiff and gdalwarp_dst_25832.tiff are georeferenced differently (they might also differ in resampling method, and they do differ in number of bands, but that's not my main concern now). There is a visible offset between the two, especially if I turn on and off these layers. The offset is worse towards the southern-eastern corner, not so bad in the north-western corner. Where it's bad, it can be around a 100 meters or more. Given that I aim for the results of the gdalwarp command: How do I reproject using rasterio?
gis.stackexchange.com
June 20, 2025 at 10:26 AM
Mapproxy source from WMTS bounding box issue
I am trying to create an offline version from here: https://wmts.maptiler.com/aHR0cHM6Ly9ubHMudGlsZXNlcnZlci5jb20vZnBzVVpieHRndGtuL2luZGV4Lmpzb24/wmts and here is my current config: services: demo: wms: md: title: OS 10k 1888 tms: origin: 'nw' layers: - name: osgb10k1888 title: OS 10k 1888 sources: [osgb10k1888_cache] caches: osgb10k1888_cache: sources: [osgb10k1888_wmts] grids: [webmercator] sources: osgb10k1888_wmts: type: tile grid: webmercator url: https://nls-0.tileserver.com/fpsUZbxtgtkn/%(z)s/%(x)s/%(y)s.jpg grids: webmercator: base: GLOBAL_WEBMERCATOR This all seems to work fine with the resulting levels and resolutions matching the source correct: Level and Resolutions Level Resolution 0 78271.51696402048 1 39135.75848201024 2 19567.87924100512 3 9783.93962050256 4 4891.96981025128 5 2445.98490512564 6 1222.99245256282 7 611.49622628141 8 305.748113140705 9 152.8740565703525 10 76.43702828517625 11 38.21851414258813 12 19.109257071294063 13 9.554628535647032 14 4.777314267823516 15 2.388657133911758 16 1.194328566955879 17 0.5971642834779395 18 0.29858214173896974 however the resulting bounding box is: -20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244 I have tried adding the bbox to the grid based on the source: -7.793077 49.852539 1.790425 60.894042 but this the screws up all the resolutions and causes the map to be misaligned do i need to add all the res into the grid and specify the coords instead of using the web global default?
gis.stackexchange.com
April 11, 2025 at 8:09 AM
Trying to configure reprojection of Tile Source to Webmercator using Mapproxy
I have a source of tiles served from a WMTS, these tiles are cached in a prpriatare scale format and is not following any of the standards as GLOBAL_WEBMERCATOR. I have a client that wants to fetch tiles, but can only do so in WEBMERCATOR. So i thought i could use use Mapproxy to reproject the tiles. The given Capabilities file (some info omitted): BaseMap BaseMap -11655.832400001585 6258393.602399997 3770690.9673999995 1.1255899910499997E7 Default Style default image/png default028mm TileMatrix using 0.28mm The tile matrix set that has scale values calculated based on the dpi defined by OGC specification (dpi assumes 0.28mm as the physical distance of a pixel). default028mm urn:ogc:def:crs:EPSG::3857 0 1.7471320750895232E7 -2.0037508342789248E7 2.0037508342789248E7 256 256 20 12 1 8735660.375447616 -2.0037508342789248E7 2.0037508342789248E7 256 256 39 23 2 4367830.187723808 -2.0037508342789248E7 2.0037508342789248E7 256 256 77 45 3 2183915.093861904 -2.0037508342789248E7 2.0037508342789248E7 256 256 153 89 4 1091957.5469309513 -2.0037508342789248E7 2.0037508342789248E7 256 256 305 177 5 545978.773465476 -2.0037508342789248E7 2.0037508342789248E7 256 256 609 353 6 272989.38673273794 -2.0037508342789248E7 2.0037508342789248E7 256 256 1217 705 7 136494.693366369 -2.0037508342789248E7 2.0037508342789248E7 256 256 2434 1409 8 68247.34668318449 -2.0037508342789248E7 2.0037508342789248E7 256 256 4867 2817 9 34123.67334159225 -2.0037508342789248E7 2.0037508342789248E7 256 256 9734 5634 10 17061.836670796125 -2.0037508342789248E7 2.0037508342789248E7 256 256 19468 11267 11 8530.918335398062 -2.0037508342789248E7 2.0037508342789248E7 256 256 38935 22534 12 4265.459167699031 -2.0037508342789248E7 2.0037508342789248E7 256 256 77869 45067 i devised a mapproxy config: services: demo: wmts: layers: - name: "basemap" title: "basemap" sources: [basemap_cache] caches: basemap_cache: cache: type: file directory: /cache_data/basemap sources: basemap_wmts] grids: [GLOBAL_WEBMERCATOR] sources: basemap_wmts: type: tile url: http://foobar/%(z)s/%(x)s/%(y)s.png grid: custom grids: custom: base: GLOBAL_MERCATOR origin: 'nw' bbox: [-11655.832400001247, 6258393.6023999965, 3770690.9674, 11255899.910499997] bbox_srs: 'EPSG::3857' res: [ # res level scale @90.7 DPI 4891.9698102507, # 0 17471320.75089523 2445.9849051253, # 1 8735660.37544762 1222.9924525627, # 2 4367830.18772381 611.4962262813, # 3 2183915.09386190 305.7481131407, # 4 1091957.54693095 152.8740565703, # 5 545978.77346548 76.4370282852, # 6 272989.38673274 38.2185141426, # 7 136494.69336637 19.1092570713, # 8 68247.34668318 9.5546285356, # 9 34123.67334159 4.7773142678, # 10 17061.83667080 2.3886571339, # 11 8530.91833540 1.1943285670, # 12 4265.45916770 ] The problem here is that its not working, im getting exceptions in the mapproxy logs. First it doesnt like my bounding box i think: 2025-04-08 08:56:01,117 - INFO - mapproxy.system - using pyproj for coordinate transformation Traceback (most recent call last): File "/mapproxy/app.py", line 26, in application = make_wsgi_app(r'/mapproxy/config/mapproxy.yaml', reloader=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/wsgiapp.py", line 53, in make_wsgi_app return ReloaderApp(services_conf, make_app) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/wsgiapp.py", line 76, in __init__ self.app = make_app_func() ^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/wsgiapp.py", line 52, in make_app return make_wsgi_app(services_conf=services_conf, debug=debug, reloader=False) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/wsgiapp.py", line 57, in make_wsgi_app services = conf.configured_services() ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/config/loader.py", line 217, in configured_services return self.services.services() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/config/loader.py", line 2168, in services new_services = creator(service_conf or {}) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/config/loader.py", line 2331, in demo_service lyr = layer_conf.wms_layer() ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/util/py.py", line 73, in wrapper cache[key] = func(self, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/config/loader.py", line 1930, in wms_layer map_layer = self.context.caches[source_name].map_layer() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/util/py.py", line 73, in wrapper cache[key] = func(self, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/config/loader.py", line 1844, in map_layer for grid, extent, tile_manager in self.caches(): ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/util/py.py", line 73, in wrapper cache[key] = func(self, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/config/loader.py", line 1713, in caches sources, source_image_opts = self._sources_for_grid( ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/config/loader.py", line 1592, in _sources_for_grid source = source_conf.source({'format': request_format}) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/config/loader.py", line 1064, in source grid = self.context.grids[grid_name].tile_grid() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/util/py.py", line 73, in wrapper cache[key] = func(self, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/config/loader.py", line 309, in tile_grid grid = tile_grid( ^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/grid.py", line 117, in tile_grid bbox = grid_bbox(bbox, srs=srs, bbox_srs=bbox_srs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/grid.py", line 229, in grid_bbox bbox = SRS(bbox_srs).transform_bbox_to(srs, bbox) ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/srs.py", line 117, in SRS srs = _srs_impl(srs_code) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/srs.py", line 350, in __init__ epsg_num = get_epsg_num(srs_code) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/srs.py", line 49, in get_epsg_num epsg_code = int(epsg_code.split(':')[1]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: invalid literal for int() with base 10: '' Even though its the bounding box defined in the capabilities file. If i remove the bounding box defined in the Mapproxy configuration i get: 2025-04-08 08:47:55,055 - CRITICAL - mapproxy.wsgiapp - fatal error in wmts for /wmts/basemap/GLOBAL_WEBMERCATOR/5/18/13.png? Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/mapproxy/wsgiapp.py", line 155, in __call__ resp = self.handlers[handler_name].handle(req) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/service/base.py", line 31, in handle return handler(parsed_req) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/service/wmts.py", line 101, in tile tile = tile_layer.render(request, coverage=limited_to, decorate_img=decorate_img) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/service/tile.py", line 314, in render tile = self.tile_manager.load_tile_coord(tile_coord, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/cache/tile.py", line 122, in load_tile_coord return self.load_tile_coords( ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/cache/tile.py", line 151, in load_tile_coords tiles = self._load_tile_coords( ^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/cache/tile.py", line 206, in _load_tile_coords created_tiles = creator.create_tiles(uncached_tiles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/cache/tile.py", line 373, in create_tiles created_tiles = self._create_single_tiles(tiles) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/cache/tile.py", line 397, in _create_single_tiles created_tiles.extend(self._create_single_tile(tile)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/cache/tile.py", line 415, in _create_single_tile source = self._query_sources(query) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/cache/tile.py", line 455, in _query_sources return self.sources[0].get_map(query) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/source/tile.py", line 68, in get_map _bbox, grid, tiles = self.grid.get_affected_tiles(query.bbox, query.size) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/grid.py", line 520, in get_affected_tiles src_bbox, level = self.get_affected_bbox_and_level(bbox, size, req_srs=req_srs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/mapproxy/grid.py", line 530, in get_affected_bbox_and_level raise NoTiles() mapproxy.grid.NoTiles Which basically just straight up says there is no tile? I dont really understand how i should configure mapproxy to convert from the defined format from my source, to a more standardized format as WEBMERCATOR. Is it even possible?
gis.stackexchange.com
April 8, 2025 at 9:26 AM