
Cesium
yGIS
这个作者很懒,什么都没留下…
展开
-
开源三维GIS之Cesium环境搭建(一)
之前一直在做三维GIS方面的开发,使用的是睿城传奇的stampGIS,目前该三维GIS平台支持IE浏览器,在大规模三维场景渲染方面速度还可以。业余时间也查阅了相关三维方面的GIS平台,特别是开源方面,其中Cesium表现比较突出,所以花了点时间学习一下。 Cesium是基于JavaScript编写的,使用WebGL的地图引擎,一款开源3DGIS的js库。无插件支持多种浏览...原创 2018-08-13 18:38:01 · 20850 阅读 · 2 评论 -
Cesium开发&osgb倾斜数据发布工具开发数据解析遇到的问题
今天在写到osgb数据解析,用到的tinygltf是高版本的,模型类Model带有扩展属性。其中扩展数据需要相应的键值解析json,这里使用的是tinygltf2.2,该版本需要std_img_write.h v1.11的支持,目前我使用的是这个版本。这事起于,自己想解决3dtile中不需要修改前端代码,而是修改3dtile的数据格式,这样的一个想法。那么这里着重是要解决扩展数据json的拼接。而...原创 2019-04-12 21:30:04 · 1766 阅读 · 0 评论 -
Cesium源码分析&3dtile数据着色器解码
首先我来看一下这样的一个gltf,一般来说3dtile数据是由gltf和头文件信息组建而成。而现在我们要对shaders中的着色器进行解码。shaders分别右两部分构成,一部分是顶点着色器,另外一部分是片元着色器。着色语言为webgl,即使用了glsl语言,类似于C语言进行编写。而放到shaders数组中的存放形式,可以是二进制形式,也可以是数据视图,存放着缓冲区,也可以是json格式的数据。而...原创 2019-04-16 13:43:38 · 4304 阅读 · 0 评论 -
Cesium源码分析&gltf解析
我这里的3dtile有一部分数据是由gltf构成的,在创建模型(model)的时候,构造函数里面,已经将该数据进行了解析。现在我们来看一下源代码是如何执行的,这里截取构造函数里面的一部分代码。 options = defaultValue(options, defaultValue.EMPTY_OBJECT); var cacheKey = options.c...原创 2019-04-22 15:55:00 · 3141 阅读 · 0 评论 -
Cesium开发&关于加载geoserver发布的wms地图服务
首先我们这里使用的是geoserver发布的wms地图服务,至于如何发布的,可以参考相关的资料。不过需要注意的是,cesium只支持epsg为3857和4326的投影,即web墨卡托投影和wgs84地理坐标。当然,我自己也没有测试过其他的坐标系,我们来看一下源代码。从下面的代码中,可以知道WMS有两个版本,这里使用geoserver发布的地图默认的是1.1.1版本的。 // U...原创 2019-04-17 20:34:59 · 4346 阅读 · 3 评论 -
Cesium开发&白膜发布工具开发中遇到的三角剖分问题
今天回过头来改一下工具开发中一些debug,由于当时没有时间去解决,所以放在了另一边。首先呢,在切矢量shapefile的房屋面数据时,使用的是mapbox的earcut.hpp来划分三角面的。虽然earcut.hpp已经按照了相关的理论来实现了,具体可以参考文档https://www.geometrictools.com/Documentation/TriangulationByEarCli...原创 2019-05-07 16:43:53 · 951 阅读 · 0 评论 -
C++生成uuid
最近项目的需要,使用了C++来生成uuid。这里找到了githup上面的sole.hpp。具体使用方法。可以参考网站。https://github.com/r-lyeh-archived/sole那么下面,我们来看一下以v0的方式生成uuid。 sole::uuid u0 = sole::uuid0(); string stru0 = u0.str();因为是在其他方面的...原创 2019-05-15 20:10:54 · 9030 阅读 · 0 评论 -
Cesium开发&白膜发布工具开发中遇到的数据组织问题
这是最近在编写白膜发布工具代码中遇到如下的问题,总的来说,是对数据结构不够了解,以至于遇到各种各样的困难。这几天在写到将数据添加到缓冲区时,总报出来重复添加多个数据对象的错误。依据相关的资料,估计是重复创建同样的缓冲。好了,于是对这个问题,改了发布数据的源代码。又遇到这样的问题,没有解析到buferView对象。好了,我们来看一下报错位置的源代码。在下面的这个代码中,是创建顶点数据。C...原创 2019-05-22 16:17:41 · 1557 阅读 · 0 评论 -
cesium开发&只显示半边球
最近在做ceisum开发的时候遇到这样的问题,如下图所示,只显示了半边球。就我的情况而言是,是设置图层的json文件中,配置地形可见性,x层级的位置不对了。我设置的是从startX:0,endX:0,而我们知道如果对于零级而言这是左边那张瓦片,而如果是设置startx:1;endX:1那么将显示右边的半球。那么正确的设置应该是startX:0 endX:1,这样将会显示整个球。...原创 2019-04-08 20:22:28 · 3177 阅读 · 2 评论 -
Cesium开发&关于tinygltf库
最近在写osgb倾斜数据发布工具的时候,用到了tingygltf库。这个库用依赖于json.hpp。目前新版本的为2.2,在该版本中已经摄取gltf数据序列化函数。转而依旧保存着将json写入到文件成为gltf数据函数。其实在osgb数据发布还是利用到序列化函数的。而在老版本的tinygltf库中序列化函数如下。std::string TinyGLTF::Serialize(Model *m...原创 2019-04-11 20:44:21 · 3170 阅读 · 1 评论 -
Cesium开发&gdal地形数据切割问题
在使用读取数字高程数据dem的tif格式时,用到了gdal来获取。我这里编译好了带有可以投影转换的gdal2.0.0版本,gdal从2.0.0开始将读取矢量和栅格统一为一个类了。而我们这里需要用到读取tif预览数据,使用下面这个函数。staticGDALDatasetHgetOverviewDataset(GDALDatasetH hSrcDS, GDALTransformerFunc ...原创 2019-03-27 19:25:32 · 2003 阅读 · 2 评论 -
开源三维GIS之Cesium创建盒几何对象(二)
类似于睿城传奇stampGIS的几何对象,Cesium也提供多种几何对象,开发人员可以根据自己的需要创建。今天我们来学习一下Cesium创建BoxGeomtry。Cesium提供多种方法来创建BoxGemotry。(1)使用使用默认的方法来来创建盒几何对象。需要提供在三维中最小点和最大点。具体如下图所示,假设在0-XYZ坐标系中,确定最大点和最小点。即可。示例源代码如下:var ...原创 2018-08-18 21:50:09 · 3437 阅读 · 0 评论 -
开源三维GIS之Cesium的Cartesian3(三)
最近正好要学习cesium的坐标系,于是学习了Cartesian3相关函数。这是部分结合自己的理解和cesium的源代码资料,翻译了过来。估计会存在一定错误,后面会根据实践做相应补充。也希望大家一起来共同学习。 函数 返回类型 说明 clone(result) Cartesian3 ...原创 2018-08-27 22:33:34 · 14174 阅读 · 0 评论 -
开源三维GIS之Cesium的Cartesian2(四)
今天再次来学习开源三维平台Cesium相关知识。Cesium的二维坐标点在Cartesian2中,Cartesian2提供了多种函数供开发者使用,下面是Cartesian2一些使用说明,由于没有通过具体使用测试过,所以不免会出现一些出入。后期将会不断完善。 函数 返回类型 使用说明 clone Ca...原创 2018-09-02 12:23:58 · 4566 阅读 · 0 评论 -
开源三维GIS之Cesium基本设置与加载天地图(五)
嵌入三维地球Cesium到我们的应用中,往往需要对最原始的Cesium初始化参数进行调整。下面是Cesium不经过任何参数设置的三维球界面。现在需要对右上角的按钮取舍进行选择,以及左下角的时间控件(动画控件、时间轴)、和Cesium的logo去掉。最后做出的效果如下图所示。这里还在三维球上加载天地图、以及其他地图。具体实现代码如下。<!DOCTYPE html&...原创 2019-01-05 10:47:48 · 10284 阅读 · 8 评论 -
cesium开发&加载shapefile制作的白膜
首先这里制作的shapefile白膜数据是.shp转为.gltf格式的支持cesium加载数据。其实还是一个json格式数据,具体是什么样如下图所示。{ "accessors": [ { "bufferView": 0, "componentType": 5123, "count": 36, "type": "SCALAR"原创 2019-02-22 09:42:28 · 7425 阅读 · 0 评论 -
cesium开发&加载倾斜模型
这次我们测试使用倾斜模型数据,主要是使用cesiumlab实验室工具将osgb数据转为json格式的倾斜模型,然后加载,但是在加载的时候需要特别注意的是这次模型的位置矩阵。否则可能会出现当数据已经处理好了,但是由于模型数据数据并不在视角内。以为没有加载成功。下面是使用cesium控件可以动态调整模型的高度一个demo。<!DOCTYPE html><html lang="...原创 2019-02-22 13:58:57 · 5417 阅读 · 3 评论 -
cesium开发&从github上面下载源代码环境搭建
github上源代码安装。一开始我是想从github上面下载源代码来运行一下。首先使用webstorm打开下载后的源代码结构如下图所示。在gulp.js代码中可以看到有如下的函数。glslToJavaScript,这里需要利用nodejs和gulp来编译CzmBuiltins.js文件需要创建一个工程,将源代码中的glsl后缀的文件按照源代码中的路径配置过来。具体的工程如下图所示。...原创 2019-02-18 14:43:45 · 2707 阅读 · 0 评论 -
cesium开发&使用requireJS来配置模块
配置好开发的源代码后,可以使用requireJS的方式来配置模块。下面是使用requireJS的方式来配置文件。首先来看一下工程的整个目录,如下图所示。其中,CesiumView为我们的运行文件,代码如下所示。define([ 'Cesium/Core/Cartesian3', 'Cesium/Core/createWorldTerrain', ...原创 2019-02-19 09:55:46 · 2098 阅读 · 0 评论 -
cesium开发&Terrain地形切片原理分析
首先由缩放的层级计算出切片的位置,其中整个切片的层级是第0级,即由两个切片组成,如下图所示,第一张切片的左下角位置为(-180,-90),右上角为(0,90),第二张图片左下角为(0,-90)右上角为(180,90),依次每张切片的唯一标识,按照l/x/y.terrain,来组织文件结构。而第二图所示,即为表示层级为8、x为407、y为165的地形切片数据。一开始需要计算出地形影像在每...原创 2019-03-14 08:51:29 · 7373 阅读 · 0 评论 -
Cesium开发源码分析&QuantizedMesh地形数据解析过程
来解析一下qumesh数据格式,首先我们来看源代码,其中是如何根据摄影机高度,确定一张切片,然后生成地形数据的。下面是创建地形代码。 function createQuantizedMeshTerrainData(provider, buffer, level, x, y, tmsY, layer) { var littleEndianExtensionSize = laye...原创 2019-03-18 22:14:48 · 2496 阅读 · 0 评论 -
Cesium开发&Terrain数字高程地形数据编码与解码
这几天在开发地形数据发布工具的时候,对应数字高程地形数据的编码与解码中遇到如下的问题。提示的错误是:Expected sizeInBytes to be greater than 0, actual value was 0根据上面的提示,应该是加载四叉树数据出现了问题,再根据console控制台输出的提示,我想应该是开发地形发布工具切的地形高程数据出现了问题。于是在C++编写...原创 2019-03-31 19:18:14 · 3422 阅读 · 1 评论