基于ArcGIS的三维路网可视化
1. 引言
ArcGIS作为GIS的集大成者,对于三维可视化方面也有集成,参考自:3D 折线 (polyline) 要素—ArcMap | 文档 (arcgis.com),可以使用ArcGIS来构造与显示三维路网
使用ArcGIS创建3D polyline主要有两种方式:
- 新建 3D 线要素类:定义要素类的几何时选中坐标包括 Z 值复选框。
- 转换现有的 2D 数据:从高程表面获取高度值或使用现有要素属性
详细信息参考:3D 折线 (polyline) 要素—ArcMap | 文档 (arcgis.com)
此次笔者将高程数据写为2D数据的属性,再使用要素属性将2D polyline转化为3D polyline
2. 数据描述
笔者的数据示例如下所示:
38406174.4883,3151120.24725,332.794756
38406149.819,3151113.57996,336.863586
38400526.1848,3146348.79657,90.0
38400537.386,3146371.63206,109.182556
38406169.3211,3149468.75793,107.071533
38406135.9842,3149417.08638,107.745277
每一行为一个点,字段分别为X,Y,Z
每两个点构成一条线,比如1、2是一条线,3、4是一条线,以此类推
3. 构造二维路网
此处笔者使用Python编写脚本将csv数据转换为二维路网,并将高程写为属性数据z1和z2,并设置投影
代码基于Python3.6构建
使用到的库有:
- pyshp
- pyproj(需要2.0以上版本)
from pyproj import CRS
import shapefile
epsg_num = 4526
data_address = '../data/result/final_map_dem.shp'
dem_csv = '../data/tmp/output/final_map_with_dem.csv'
file = shapefile.Writer(data_address)
# 创建字段
file.field('id', 'N')
file.field('z1', 'F')
file.field('z2', 'F')
polyline = []
with open(dem_csv,'r') as points:
points = points.readlines()
i = 0
while (i < len(points)):
point1 = points[i].split(',')
point2 = points[i+1].split(',')
line = [[float(point1[0]),float(point1[1])],[float(point2[0]),float(point2[1])]]
polyline.append([line, float(point1[2][:-1]), float(point2[2][:-1])])
i=i+2
for i, traj in enumerate(polyline):
file.line([traj[0]])
file.record(i,traj[1], traj[2])
# 写入数据
file.close()
# 定义投影
crs = CRS.from_epsg(epsg_num)
wkt = crs.to_wkt('WKT1_ESRI')
# 写入投影
f = open(data_address.replace(".shp", ".prj"), 'w')
f.write(wkt)
f.close()
经过上述脚本,我们就得到了.shp文件
4. 生成三维路网
使用ArcMap,加载刚才生成的.shp文件

点击Feature To 3D By Attribute功能,设置参数即可得到3D路网:

5. 在ArcScene中可视化
在ArcScene中加载刚才生成的三维路网.shp文件,就可以看到生成的三维路网(底图为DEM图片):

另外,我们可以使用DEM数据设置地形:

由于DEM与路网重叠,我们将路网提高40米以展示:

设置一下合理的配色,即可得到一个不错的可视化效果:

基于ArcGIS的三维路网可视化的更多相关文章
- 基于ArcGIS for Server的服务部署分析 分类: ArcGIS for server 云计算 2015-07-26 21:28 11人阅读 评论(0) 收藏
谨以此纪念去年在学海争锋上的演讲. ---------------------------------------------------- 基于ArcGIS for Server的服务部署分析 -- ...
- 基于SceneControl的三维GIS开发
在ArcGIS体系中,三维开发包括两种:基于Scene的三维开发和基于Globe的三维开发. 由上图可以看出,两种开发的接口都很相似,掌握了Scene开发会相对容易的过渡到Globe开发中. 正如上图 ...
- Excel真的是三维地图可视化制作最好的选择吗?
随着数据在当下互联网快速发展下变的维度更广,数量更大.结构越来越复杂,人们想要更加清晰,快速的认知和理解一份数据,传统的二维平面图表已经不能满足需求,三维可视化技术越结合多媒体技术.网络技术以及三维镜 ...
- 基于ArcGIS Viewer for Flex开发的一款跨平台的应用程序
特点: 1.基于ArcGIS Viewer for Flex开发的一款跨平台的应用程序: -(IBAction) showTOC:(id)sender { if (_tocViewController ...
- Vis.js – 基于浏览器的动态 JavaScript 可视化库
Vis.js 是一个动态的,基于浏览器的可视化库.该库被设计为易于使用,能处理大量的动态数据.该库由以下几部分组成:一是数据集和数据视图,基于灵活的键/值数据集,可以添加,更新和删除项目,订阅数据集变 ...
- 基于ArcGIS JS API的在线专题地图实现
0 引言 专题地图是突出而深入的表示一种或几种要素或现象,即按照地图主题的要求,集中表示与主题有关内容的地图.专题地图的专题要素多种多样,分类方法也多种多样,根据专题地图表现数据的特点可分为定 ...
- 基于Eclipse的Go语言可视化开发环境
http://jingyan.baidu.com/article/d7130635032e2f13fdf475b8.html 基于Eclipse的Go语言可视化开发环境 | 浏览:2924 | 更新: ...
- 基于 ArcGIS Silverlight API开发的WebGIS应用程序的部署
部署流程概述 在微软的iis服务器上部署基于ArcGIS Silverlight API的应用程序,主要包括以下几个步骤: 1)(可选)部署GIS服务 如果需要将GIS服务也部署在Web服务器上,则 ...
- 基于ArcGIS的栅格图像平滑处理(转)
基于ArcGIS的栅格图像平滑处理 栅格数据获取的途径多种多样,造成了栅格数据质量的很大差异,一些质量较差的栅格数据存在大量“噪音”象元,即在表达同类型的地理要素时,出现个别像元值与周边像元不一致的情 ...
- 点聚合功能---基于ARCGIS RUNTIME SDK FOR ANDROID
一直不更新博客的原因,如果一定要找一个,那就是忙,或者说懒癌犯了. 基于ArcGIS RunTime SDK for Android的点聚合功能,本来是我之前做过的一个系统里面的一个小部分,今天抽出一 ...
随机推荐
- Go语言性能剖析利器--pprof实战
作者:耿宗杰 前言 关于pprof的文章在网上已是汗牛充栋,却是千篇一律的命令介绍,鲜有真正实操的,本文将参考Go社区资料,结合自己的经验,实战Go程序的性能分析与优化过程. 优化思路 首先说一下性能 ...
- jquerylib表单
用jquerylib,实现表格添加内容和删除内容 <!DOCTYPE html> <html> <head> <meta charset="UTF- ...
- Redis RDB 与AOF
参考书籍<Redis设计与实现> 一丶为什么redis需要持久化 redis 作为一个内存数据库,如果不想办法将存储在内存中的数据,保存到磁盘中,那么一旦服务器进程退出,那么redis数据 ...
- NC14501 大吉大利,晚上吃鸡!
题目链接 题目 题目描述 最近<绝地求生:大逃杀>风靡全球,皮皮和毛毛也迷上了这款游戏,他们经常组队玩这款游戏. 在游戏中,皮皮和毛毛最喜欢做的事情就是堵桥,每每有一个好时机都能收到不少的 ...
- Hive详解(05) - 压缩和存储
Hive详解(05) - 压缩和存储 Hadoop压缩配置 MR支持的压缩编码 压缩格式 算法 文件扩展名 是否可切分 DEFLATE DEFLATE .deflate 否 Gzip DEFLATE ...
- VuePress个人博客搭建
vuepress概述 VuePress 由两部分组成:第一部分是一个极简静态网站生成器 (opens new window),它包含由 Vue 驱动的主题系统和插件 API,另一个部分是为书写技术文档 ...
- elasticsearch之单请求多查询
一.需要解决的问题 有的时候我们需要同时执行多个查询,并且需要得到每个单独查询的搜索结果,elasticsearch提供了multi search此需求的支持: 二.elasticsearch mul ...
- Visual Studio2017快速收缩/扩展代码块
首先要设置伸缩函数的同时也伸缩region块: 快捷键 Ctrl+M+O 收缩所有方法 Ctrl+M+L 展开所有方法
- 静态文件相关配置、request请求方法、pycharm连接MySQL、orm
静态文件相关配置.request请求方法.pycharm连接MySQL.orm 风得意马蹄疾,一日看尽长安花 一.静态文件相关配置 1.编写一个登录功能 1.创建一个django项目并创建一个app ...
- 【Android】Android 源码方式使用 opencv 库文件
使用方法 opencv 官方的 SDK 已经有编译好的 so 库,我们可以直接使用,因此我们只需要将平台架构对应的 so 库文件以及头文件提取出来,使用 Android.mk 进行预安装,然后在需要使 ...