Cesium 关于tif数据的切片、发布及tif黑边问题(处理为影像切片)

最近拿到了一个tif格式的数据,想处理成地图服务供项目加载。

第一种方式使用arcmap处理,使用arcgis server发布。

第二种方式是使用cesiumlab处理,使用tomcat发布。

 

以上两种方式都得经过数据的坐标系的校对。我们知道在cesium里目前支持的是4326地理坐标系及3857投影坐标系,所以我们得在arcmap里处理成4326的坐标系。(由于本人这里处理的是无人拍摄的点云高清通道,所以可以通过cc导出,在导出的时候设置为4326即可)

arcmap中处理坐标过程:

 

以上就处理好了tif的坐标问题,此时在arcmap里打开是这样的:

年少轻狂的我,自认为黑边是没问题的,开始认为我只要将tif切片的时候,切成png格式,那么加载的时候就看不到这个黑边了。实际上,,就算切成png格式还是会有黑边。所以我们要对黑边的问题也要处理,等下会介绍下黑边的两种简单的处理方式。

这里是我使用cesiumlab切成png之后的加载效果:

先忽略黑边的问题,谈下怎么切片发布,此处也有两种方式,第一种是通过arcmap直接发布切片服务,也就是发布成mapserver服务,第二种是通过ceisumlab进行切片,切成xyz格式的数据,然后通过tomcat发布。

a)、通过arcmap进行切片,通过arcgis server发布,主要步骤如下:

切片建立缓存:

arcgis server 发布:

加载:

copy下上面的rest url即可看到服务的详情了。但是我在cesium中加载的时候,一直提示跨域,就算配置了arcgis server 的tomcat也一样提示跨域,不知为啥,后面再研究吧。

注:这里我是将tif切成了png格式的arcgis cache结构的数据,也可通过geowebcache进行发布。那么这样就可以绕开argis server 的发布过程了,没时间尝试,后面有结果了告诉大家,可以先关注这篇文章。

没办法只能采取cesiumlab进行切片:

切片过程不赘述了,傻瓜式操作,最后的效果就是上面带黑边的效果,文件结构如下:

加载方式为xyz请求。

 

下面说下关于黑边的处理过程,两种方式:

1、在arcmap里设置nodata为0;

方式a):

然后导出tif,用cesiumlab处理,此时处理也不需要设置alpha了。

方式b):导出tif,设置nodata为0,然后用lab处理。

2、用ceisumlab切片时,设置如下:设置为透明色即可。

 

以上就简单介绍了tif的相关处理及去黑边的过程:

最终效果如下:

 

大家有什么疑惑或者不明确的地方可以给我留言或私信,如果有说的不对的地方,也请大家指正。 

  • 8
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
Cesium是一种开源的地理信息系统(GIS)软件开发库,用于在web浏览器中创建三维地球可视化应用程序。Cesium支持多种数据格式,包括基于栅格的图像文件格式,如TIFF(TIFF Image File)。 在Cesium中加载和显示TIFF影像非常简单。首先,需要将TIFF文件转换为合适的格式,例如创建一个高程图(Elevation Raster)或纹理图(Texture Raster)。这可以使用其他GIS软件,如GDAL或ArcGIS进行处理。 一旦TIFF文件已准备好,可以使用Cesium的ImageryLayer添加它到场景中。以下是加载TIFF影像的基本步骤: 1. 在HTML文件中,添加Cesium的JavaScript库文件和样式表: ```html <link href="https://cesium.com/downloads/cesiumjs/releases/latest/Build/Cesium/Widgets/widgets.css" rel="stylesheet"> <script src="https://cesium.com/downloads/cesiumjs/releases/latest/Build/Cesium/Cesium.js"></script> ``` 2. 创建一个Cesium的Viewer对象来显示场景: ```javascript var viewer = new Cesium.Viewer('cesiumContainer'); ``` 3. 声明一个ImageryLayer变量,并将TIFF文件的URL赋值给它: ```javascript var tiffUrl = 'path/to/your/tiff/image.tif'; var imageryLayer = new Cesium.ImageryLayer(new Cesium.SingleTileImageryProvider({ url : tiffUrl })); ``` 4. 将ImageryLayer添加到Viewer的imageryLayers集合中: ```javascript viewer.imageryLayers.add(imageryLayer); ``` 5. 运行HTML文件,Cesium将加载并显示TIFF影像。 通过这些步骤,我们可以很容易地在Cesium中加载和显示TIFF影像。根据需要,还可以对影像进行进一步的样式化和操作,以实现更丰富的地球可视化效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值