转自原文 Cesium之3D拉伸显示行政区含GeoJSON数据生成过程GDAL的ogr2ogr

Cesiumjs 是一套javascript库,用来渲染3D地球,2D区域地图,和多种GIS要素。不需要安装任何插件就能在支持最新HTML5标准的浏览器上运行。支持WebGL硬件加速,非常适合动态数据在GIS图层上的展示,是一个跨平台,开源,非常有前途的webgis表现层库。Cesium 基于 Apache 开源协议,支持商业和非商业免费使用。

背景:

Cesiumjs源自 Analytical Graphics, Inc. (AGI)公司为他们客户开发一个虚拟地球项目,后来将cesium项目贡献给开源社区并一直活跃开发中。是一种针对Cesium-应用的流式高分辨率服务器)另一个公司级的贡献者是NICTA (NationalICT Australia) 澳大利亚最大的信息与通讯技术中心,NICTA的员工们贡献了瓦片地图服务、地形处理等cesium的核心功能。并一直使用cesium开发环境监测分析、交通基础设施建模仿真优化等领域的应用。

Demo需求,想要将北京市行政区划内的要素,用3D表现出来,首先,需要得到北京16个区的面坐标:

Cesium通过GeoJSON(JSON格式)格式的数据展示空间要素,因此,需要得到此种格式的北京行政区划坐标,通过研究,可以使用GDAL的ogr2ogr方法将shp格式的图层转成GeoJSON格式

下面说一下GDAL的下载和使用:

需要安装GDAL,下载路径:http://www.gisinternals.com/release.php
下载的是第一个:release-1500-gdal-1-11-3-mapserver-6-4-2
解压缩release-1500-gdal-1-11-3-mapserver-6-4-2.zip
根据里面的read-me.txt,安装此GDAL需要CMD运行SDKShell.bat命令即可,成功安装,每次重启机器后,需要重新执行此程序进行安装,才能使用
然后cd C:\Users\IBM_ADMIN\Downloads\release-1500-gdal-1-11-3-mapserver-6-4-2\bin\gdal\apps

根据ogr2ogr.exe的工具进行转换,开始,找到的shp文件转换失败,后从此命令转换的shp修改了下,即可成功转成json,可能是有的shp文件不支持,具体不详
命令:
将geoJSON转成shp格式:
C:\Users\IBM_ADMIN\Downloads\release-1500-gdal-1-11-3-mapserver-6-4-2\bin\gdal\a
pps>ogr2ogr -f "ESRI Shapefile" v.shp geojsonfile.json

将f.shp转成geoJSON格式:
C:\Users\IBM_ADMIN\Downloads\release-1500-gdal-1-11-3-mapserver-6-4-2\bin\gdal\a
pps>ogr2ogr -f "GeoJSON" o.json f.shp

因为本地没有现成的北京行政区shp图层,因此,又发现竟然可以通过ESRI在线地图服务的行政区图层转成GeoJSON格式,开始发现坐标系不是wgs84,Cesium-1.16仅支持WGS84坐标系,因为,加入参数,将ESRI的输出坐标系转成4326,即可。

代码:

ogr2ogr -f GeoJSON test.json "http://cache1.arcgisonline.cn/ArcGIS/rest/services/ChinaCities_Community_BaseMap_CHN/BeiJing_Community_BaseMap_CHN/MapServer/0/query?where=1%3D1&outfields=*&f=json" OGRGeoJSON
修改下语句即可,ArcGISServer支持输出不同的坐标系
ogr2ogr -f GeoJSON test.json "http://cache1.arcgisonline.cn/ArcGIS/rest/services/ChinaCities_Community_BaseMap_CHN/BeiJing_Community_BaseMap_CHN/MapServer/0/query?where=1%3D1&outSR=4326&outfields=*&f=json" OGRGeoJSON

完成导出

这时候终于得到了GeoJSON格式的北京行政区数据文件

下面就是将Cesium现成的例子,改个数据源地址,和高程字段

//Seed the random number generator for repeatable results.Cesium.Math.setRandomNumberSeed(0);var promise = Cesium.GeoJsonDataSource.load('../../SampleData/test.json');promise.then(function(dataSource) {viewer.dataSources.add(dataSource);//Get the array of entitiesvar entities = dataSource.entities.values;var colorHash = {};for (var i = 0; i < entities.length; i++) {//For each entity, create a random color based on the state name.//Some states have multiple entities, so we store the color in a//hash so that we use the same color for the entire state.var entity = entities[i];var name = entity.name;var color = colorHash[name];if (!color) {color = Cesium.Color.fromRandom({alpha : 1.0});colorHash[name] = color;}//Set the polygon material to our random color.entity.polygon.material = color;//Remove the outlines.entity.polygon.outline = false;//Extrude the polygon based on the state's population.  Each entity//stores the properties for the GeoJSON feature it was created from//Since the population is a huge number, we divide by 50.entity.polygon.extrudedHeight = entity.properties.Shape_Area / 100000.0;}}viewer.zoomTo(promise);

最终效果如上图所示。

Cesium之3D拉伸显示行政区相关推荐

  1. Cesium之3D拉伸显示行政区含GeoJSON数据生成过程GDAL的ogr2ogr

    简介: Cesiumjs 是一套javascript库,用来渲染3D地球,2D区域地图,和多种GIS要素.不需要安装任何插件就能在支持最新HTML5标准的浏览器上运行.支持WebGL硬件加速,非常适合 ...

  2. 遥感数字图像处理(实验一)——预处理、图像的真彩色和拉伸显示(包括图像的直方图显示、线性拉伸、与直方图匹配)

    目录 实验目的: 实验内容一: 实验步骤: 一.影像的获取 二.影像的合成 三.对合成的影像进行不规则分幅裁剪 四.对裁剪的影像进行拉伸 五.直方图匹配 六.实验总结及扩展 实验目的: 理解遥感数字图 ...

  3. 英雄联盟(LOL)3d模型显示

    英雄联盟(LOL)3d模型显示. 参考资料:http://code.google.com/p/lolblender/wiki/fileFormats 注:由于版本升级,lol模型的骨骼文件的文件格式发 ...

  4. Min3D测试-在Android里面载入MMD模型-快速3D模型显示测试-By黑月君

    快速在Android里面实现3D人物显示 一直在研究Android上实现女仆美豆酱(个人助理)的研究,在制作完毕短信和电话提醒功能后,希望可以实现3D人物的快速显示 至少可以独立显示模型及其动作,主要 ...

  5. 在Google地图中显示行政区边界

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 不知道从 ...

  6. 基于STM32的四旋翼无人机项目(二):MPU6050姿态解算(含上位机3D姿态显示教学)

    前言:本文为手把手教学飞控核心知识点之一的姿态解算--MPU6050 姿态解算(飞控专栏第2篇).项目中飞行器使用 MPU6050 传感器对飞行器的姿态进行解算(四元数方法),搭配设计的卡尔曼滤波器与 ...

  7. Slicer学习笔记(五十一)slicer python扩展中在3D视图显示信息

    Slicer学习笔记(五十一)slicer python扩展中在3D视图显示信息 1.Display text in a 3D view or slice view 2.显示体绘制 VolumeRen ...

  8. Unity中将3D模型显示在UI上或者显示在UI前面

    标题 Unity中将3D模型显示在UI上或者显示在UI前面 一.将3D模型显示在UI上-使用RawImage和Render Texture组合实现效果 1.创建一个RawImage控件 2.创建一个R ...

  9. 实现3D模型显示在UI层上面

    在网上搜了很多发现都实现不了我要的结果,故而只能自己做了.方法很简单 因为我的游戏是2D游戏,于是我用了两个正交摄像机(orthigraphic) 第一个摄像机,用来照射UI,第二个摄像机用来照射模型 ...

最新文章

  1. CMAKE_MAKE_PROGRAM is not set
  2. 2019 年容器生态统计报告发布 | 云原生生态周报 Vol. 26
  3. python2转python3代码_python2代码批量转为python3代码
  4. css使两个盒子并列_css如何去掉重叠部分的边框?
  5. 五金手册在线查询_带剔除在线分选秤 零食袋装称重剔除秤-技术文章
  6. 用c语言程序算自己的年龄,新手编的小程序:计算年龄和出生后经历的天数的小程序...
  7. Docker Registry 删除镜像并清理
  8. python中的axis=0和1代表什么
  9. 从深圳到底特律——我的出国求学之路
  10. python安装使用pip安装numpy
  11. 反欺骗:从黑客时代的神话说起
  12. YYLabel的若干个疑问持续更新
  13. GetLastError()函数
  14. 三菱FX5U添加新模块
  15. luogu P5320 [BJOI2019]勘破神机
  16. 记录一下3dmax--substancePainter-unity烘焙法线详细过程
  17. 什么是第三方支付公司?
  18. vue3 简单封装GoogleMap组件
  19. [TJOI2013]松鼠聚会【切比雪夫距离转换曼哈顿距离】
  20. HTML网页设计制作——初音动漫(6页) dreamweaver作业静态HTML网页设计模板

热门文章

  1. stm32 ADC hal库实现
  2. 仿微信朋友圈动态列表
  3. linux驱动面试题整理
  4. ubuntu 20.04.3 安装教程(本人一步一步安装记录...)
  5. 中企海外周报 | 银联业务拓展到171个国家和地区;徐工集团向非洲客户提供定制化设备...
  6. 如何将usb设置设为第一启动项
  7. 万字长文详解华为方舟编译器的荣光和使命
  8. 【2. Redis 高级数据结构】
  9. 苹果开发者账号(公司级)和邓白氏编码(D-U-N-S)申请记录(2015.06)
  10. VuePress构建一个文档管理网站