基于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的点聚合功能,本来是我之前做过的一个系统里面的一个小部分,今天抽出一 ...
随机推荐
- Thrift RPC添加access log
前言: 当我们在部署web服务的时候,web容器通常都会记录来自客户端的访问日志.而当我们使用Thrift RPC服务的时候,Thrift服务则不会给我们自动记录客户端的访问日志. 通过这篇文章,你可 ...
- Java手写一个批量获取数据工具类
1. 背景 偶尔会在公司的项目里看到这样的代码 List<Info> infoList = new ArrayList<Info>(); if (infoidList.size ...
- Java/JDK各版本主要特性汇总
目录 Java18(2022.3) Java17(2021.9)(LTS版本) Java16(2021.3) Java15(2020.9) Java14(2020.3) Java13(2019.9) ...
- 自己动手基于 Redis 实现一个 .NET 的分布式锁
分布式锁的核心其实就是采用一个集中式的服务,然后多个应用节点进行抢占式锁定来进行实现,今天介绍如何采用Redis作为基础服务,实现一个分布式锁的类库,本方案不考虑 Redis 集群多节点问题,如果引入 ...
- Gradle 使用maven本地仓库 带来的思考
Gradle 使用maven本地仓库 带来的思考 本篇主要探究一下 在使用Gradle 的时候一般会配置 maven 的本地仓库的,那是不是Gradle 可以直接使用 maven本地仓库的jar呢 ? ...
- 边框 display属性 盒子模型 浮动 溢出 定位 z-index
目录 边框 隐藏属性 钓鱼网站 display visibility 盒子模型 调整方式 浮动 溢出 圆形头像的制作 定位 z-index属性 边框 /*border-left-width: 5px; ...
- 【JVM故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也被驱赶,怎么分析?
背景介绍 最近的docker容器经常被kill掉,k8s中该节点的pod也被驱赶. 我有一个在主机中运行的Docker容器(也有在同一主机中运行的其他容器).该Docker容器中的应用程序将会计算数据 ...
- vue项目引入echarts柱状图
一.components文件下引入 barCharts.vue文件 <template> <div :class="className" :style=" ...
- 分享一般.net core的web项目发布到服务器环境的处理步骤(来自本人实践笔记)
<步骤1:发布> <步骤2:确保已打开iis web相关功能> [注]如果未打开在按如下操作. Win7/win10通过打开或关闭windows功能. Windows2012等 ...
- 2021强网杯青少赛(qwtac)楼上大佬ddw WriteUp
楼上大佬ddw战队WRITEUP 战队信息 战队名称:楼上大佬ddw 战队排名:24 解题情况 解题过程 01 签到 操作内容: 下载附件,打开运行拿到flag 如该题使用自己编写的脚本代码请详细写出 ...