Cesium reprojection for UTM tileset.

Hi guys,

Apologies in advance for the long post and a bit of rambling. I know that this might be a duplicate topic but I haven't been able to find a consolidated answer on the forums.

I'm using a UTM-K tileset (http://www.osgeo.kr/17 at https://epsg.io/5179) that uses a Korean standard (http://map.naver.com).

The tiles were premade by the client and I would prefer to use the tiles as is without reprojecting them from a WMS/TMS server.

Which I assume to mean that I have to either reproject the globe from cesium or change the tile calculation.

On 2 dimensional maps I've tried using proj4js with some success, but working with ol3-cesium puts too much things to tinker with and the default API given by ol3-cesium seems to be a bit limited.

On cesium I've tried editing the buildImageUrl() function. When changing the buildImageUrl() function I've noticed that I can get very close, but not to the correct location, and that if I tried going closer to the target location I'd have to move the tile by half a unit or so, which leads me to think that manually changing the tile requests was a faulty idea on my part.

Some of the concerns I have when working on this are:
1. the tiles provided start at level 6 instead of 0. This means that when I load the globe it attempts to load all 4096 tiles at once. I assume I can bypass this by using the camera flyto() and then adding in the imagery layer after the flyto() even, but since I haven't got the correct projection I haven't tested this out yet.
2. if I reproject the globe instead of creating a custom tile calculator, if I place terrain information that uses EPSG:4326 it would not match up with the provided image. Can anyone confirm or deny this?
3. I'm new to the whole GIS thing, so this one seems like a silly question, would Korea be usually represented by UTM51N or UTM52N? since it lies across both units, and would the other letters in the UTM scheme be used? such as S or R for Korea?

Thank you taking your time to read through this.
If further details are needed please let me know.

Thanks and Regards,
Sangkeun Kim

Sangkeun here again, what I've attempted at the moment:

I've been trying to backtrack how to move the X and Y co-ordinates from the Imagery Provider. However that seems rather unfruitful at the moment, as I dig deeper it seems the cleaner way would be to create a new ellipsoid with the correct x and y starting points.

So the main problem is that if I use the UTM projection to put the map imagery and use EPSG to put the terrain, the two projections will not match up. Does anyone have a solution for that?

Alternatively, I've been trying to find a premade UTM projection plugin for Cesium but there does not seem to be one. Is using GDAL on the premade tiles the only way to go about this?

Hi, why dont you make a reprojection UTM tiles to the Web Mercator?


Thanks for taking the time to reply. Unfortunately the tiles are not made by us and the updates are provided by a third party in the form of UTM tiles. That means that unless we create a UTM projection on Cesium, we would have to create a reprojected tileset every time the map is updated.

Unless you'd meant why I don't reproject to Web Mercator withing Cesium, which I'm trying to ask if there's a clean way.

Hello Sangkeun,

Sorry, there isn’t anything built into Cesium for handling UTM tiles. You will have to implement the projection yourself.



Thanks for taking your time to reply Hannah. Firstly, thanks for confirming that cesium doesn’t have UTM built in. The official checklist is from 2013 and i wasn’t too sure. I’m looking for problems and solutions that might arise from a custom implementation and to see if there are third party plugins or examples.

Again thanks for your confirmation. I really appreciate it.

No problem, sorry for not answering your question sooner.
I don’t know of any third party plugins or anything.

This isn’t an area of the code I’m very familiar with, so I don’t have any suggestions for doing your own implementation. Hopefully someone else will be able to give you some information.


Haha, fair enough. If i succeed in a clean implementation I’ll let you know.

I'm having the same problem. I want to use OL3-Cesium to display a 2,5D (Columbus) view of UTM tiles (EPSG:326XX) delivered by GeoServer. But I don't want to reproject to EPSG:4326 from GeoServer as I have to stick to native format. Seemingly, Cesium doesn't take advantage of proj4js like OpenLayers does.

Kim, did you find a solution to your problem? Adapting existing code is not a too tricky task?