Cesium之3D拉伸显示行政区
转自原文 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拉伸显示行政区相关推荐
- Cesium之3D拉伸显示行政区含GeoJSON数据生成过程GDAL的ogr2ogr
简介: Cesiumjs 是一套javascript库,用来渲染3D地球,2D区域地图,和多种GIS要素.不需要安装任何插件就能在支持最新HTML5标准的浏览器上运行.支持WebGL硬件加速,非常适合 ...
- 遥感数字图像处理(实验一)——预处理、图像的真彩色和拉伸显示(包括图像的直方图显示、线性拉伸、与直方图匹配)
目录 实验目的: 实验内容一: 实验步骤: 一.影像的获取 二.影像的合成 三.对合成的影像进行不规则分幅裁剪 四.对裁剪的影像进行拉伸 五.直方图匹配 六.实验总结及扩展 实验目的: 理解遥感数字图 ...
- 英雄联盟(LOL)3d模型显示
英雄联盟(LOL)3d模型显示. 参考资料:http://code.google.com/p/lolblender/wiki/fileFormats 注:由于版本升级,lol模型的骨骼文件的文件格式发 ...
- Min3D测试-在Android里面载入MMD模型-快速3D模型显示测试-By黑月君
快速在Android里面实现3D人物显示 一直在研究Android上实现女仆美豆酱(个人助理)的研究,在制作完毕短信和电话提醒功能后,希望可以实现3D人物的快速显示 至少可以独立显示模型及其动作,主要 ...
- 在Google地图中显示行政区边界
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 不知道从 ...
- 基于STM32的四旋翼无人机项目(二):MPU6050姿态解算(含上位机3D姿态显示教学)
前言:本文为手把手教学飞控核心知识点之一的姿态解算--MPU6050 姿态解算(飞控专栏第2篇).项目中飞行器使用 MPU6050 传感器对飞行器的姿态进行解算(四元数方法),搭配设计的卡尔曼滤波器与 ...
- Slicer学习笔记(五十一)slicer python扩展中在3D视图显示信息
Slicer学习笔记(五十一)slicer python扩展中在3D视图显示信息 1.Display text in a 3D view or slice view 2.显示体绘制 VolumeRen ...
- Unity中将3D模型显示在UI上或者显示在UI前面
标题 Unity中将3D模型显示在UI上或者显示在UI前面 一.将3D模型显示在UI上-使用RawImage和Render Texture组合实现效果 1.创建一个RawImage控件 2.创建一个R ...
- 实现3D模型显示在UI层上面
在网上搜了很多发现都实现不了我要的结果,故而只能自己做了.方法很简单 因为我的游戏是2D游戏,于是我用了两个正交摄像机(orthigraphic) 第一个摄像机,用来照射UI,第二个摄像机用来照射模型 ...
最新文章
- CMAKE_MAKE_PROGRAM is not set
- 2019 年容器生态统计报告发布 | 云原生生态周报 Vol. 26
- python2转python3代码_python2代码批量转为python3代码
- css使两个盒子并列_css如何去掉重叠部分的边框?
- 五金手册在线查询_带剔除在线分选秤 零食袋装称重剔除秤-技术文章
- 用c语言程序算自己的年龄,新手编的小程序:计算年龄和出生后经历的天数的小程序...
- Docker Registry 删除镜像并清理
- python中的axis=0和1代表什么
- 从深圳到底特律——我的出国求学之路
- python安装使用pip安装numpy
- 反欺骗:从黑客时代的神话说起
- YYLabel的若干个疑问持续更新
- GetLastError()函数
- 三菱FX5U添加新模块
- luogu P5320 [BJOI2019]勘破神机
- 记录一下3dmax--substancePainter-unity烘焙法线详细过程
- 什么是第三方支付公司?
- vue3 简单封装GoogleMap组件
- [TJOI2013]松鼠聚会【切比雪夫距离转换曼哈顿距离】
- HTML网页设计制作——初音动漫(6页) dreamweaver作业静态HTML网页设计模板
热门文章
- stm32 ADC hal库实现
- 仿微信朋友圈动态列表
- linux驱动面试题整理
- ubuntu 20.04.3 安装教程(本人一步一步安装记录...)
- 中企海外周报 | 银联业务拓展到171个国家和地区;徐工集团向非洲客户提供定制化设备...
- 如何将usb设置设为第一启动项
- 万字长文详解华为方舟编译器的荣光和使命
- 【2. Redis 高级数据结构】
- 苹果开发者账号(公司级)和邓白氏编码(D-U-N-S)申请记录(2015.06)
- VuePress构建一个文档管理网站