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的三维路网可视化的更多相关文章

  1. 基于ArcGIS for Server的服务部署分析 分类: ArcGIS for server 云计算 2015-07-26 21:28 11人阅读 评论(0) 收藏

    谨以此纪念去年在学海争锋上的演讲. ---------------------------------------------------- 基于ArcGIS for Server的服务部署分析 -- ...

  2. 基于SceneControl的三维GIS开发

    在ArcGIS体系中,三维开发包括两种:基于Scene的三维开发和基于Globe的三维开发. 由上图可以看出,两种开发的接口都很相似,掌握了Scene开发会相对容易的过渡到Globe开发中. 正如上图 ...

  3. Excel真的是三维地图可视化制作最好的选择吗?

    随着数据在当下互联网快速发展下变的维度更广,数量更大.结构越来越复杂,人们想要更加清晰,快速的认知和理解一份数据,传统的二维平面图表已经不能满足需求,三维可视化技术越结合多媒体技术.网络技术以及三维镜 ...

  4. 基于ArcGIS Viewer for Flex开发的一款跨平台的应用程序

    特点: 1.基于ArcGIS Viewer for Flex开发的一款跨平台的应用程序: -(IBAction) showTOC:(id)sender { if (_tocViewController ...

  5. Vis.js – 基于浏览器的动态 JavaScript 可视化库

    Vis.js 是一个动态的,基于浏览器的可视化库.该库被设计为易于使用,能处理大量的动态数据.该库由以下几部分组成:一是数据集和数据视图,基于灵活的键/值数据集,可以添加,更新和删除项目,订阅数据集变 ...

  6. 基于ArcGIS JS API的在线专题地图实现

    0 引言     专题地图是突出而深入的表示一种或几种要素或现象,即按照地图主题的要求,集中表示与主题有关内容的地图.专题地图的专题要素多种多样,分类方法也多种多样,根据专题地图表现数据的特点可分为定 ...

  7. 基于Eclipse的Go语言可视化开发环境

    http://jingyan.baidu.com/article/d7130635032e2f13fdf475b8.html 基于Eclipse的Go语言可视化开发环境 | 浏览:2924 | 更新: ...

  8. 基于 ArcGIS Silverlight API开发的WebGIS应用程序的部署

    部署流程概述 在微软的iis服务器上部署基于ArcGIS  Silverlight API的应用程序,主要包括以下几个步骤: 1)(可选)部署GIS服务 如果需要将GIS服务也部署在Web服务器上,则 ...

  9. 基于ArcGIS的栅格图像平滑处理(转)

    基于ArcGIS的栅格图像平滑处理 栅格数据获取的途径多种多样,造成了栅格数据质量的很大差异,一些质量较差的栅格数据存在大量“噪音”象元,即在表达同类型的地理要素时,出现个别像元值与周边像元不一致的情 ...

  10. 点聚合功能---基于ARCGIS RUNTIME SDK FOR ANDROID

    一直不更新博客的原因,如果一定要找一个,那就是忙,或者说懒癌犯了. 基于ArcGIS RunTime SDK for Android的点聚合功能,本来是我之前做过的一个系统里面的一个小部分,今天抽出一 ...

随机推荐

  1. kubernetes CKA题库(附答案)

    第一题 RBAC授权问题权重: 4% 设置配置环境:[student@node-1] $ kubectl config use-context k8s Context为部署管道创建一个新的Cluste ...

  2. Jgit的使用笔记

    原文:Jgit的使用笔记 - Stars-One的杂货小窝 之前整的一个系统,涉及到git代码的推送,是通过cmd命令去推送的,然后最近在产品验收的时候,测试部门随意填了个git仓库,然后导致仓库代码 ...

  3. xxl-job定时调度任务Java代码分析

    简介 用xxl-job做后台任务管理, 主要是快速解决定时任务的HA问题, 项目代码量不大, 功能精简, 没有特殊依赖. 因为产品中用到了这个项目, 上午花了点时间研究了一下运行机制. 把看到的记一下 ...

  4. 痞子衡嵌入式:对比恩智浦全系列MCU(包含Kinetis/LPC/i.MXRT/MCX)的GPIO电平中断设计差异

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦全系列MCU(包含Kinetis, LPC, i.MXRT, MCX)的GPIO电平中断设计差异. 在痞子衡旧文 <以i.M ...

  5. cmd命令行ssh连接Linux服务器

    打开cmd工具 使用命令ssh连接服务器 ssh 用户名@ip地址 (不需要指定端口号,默认端口就是22) 输入密码即可

  6. 2022年7月12,第四组,周鹏,被算法折磨的一天【哭】【哭】【哭】【puls哭】

    今天学习了JS的几种循环语法,说实话,前几天的简单让我大意了,没有闪,很成功的被搞崩了! 一杯水,一根烟,一个算法边写边骂是一天. 多少次,我满怀期待的以为它会出现想要的结果, 但现实的残酷狠狠的折磨 ...

  7. CH579-Lwip-2.12移植

    代码可以参考以下链接:https://gitee.com/maji19971221/lwip-routine Lwip可以在以下链接下载:http://download.savannah.gnu.or ...

  8. Kali-Linux-for-Docker

    说明 基于kali官方开源的Docker镜像修改,如需使用官方固件可以前往https://hub.docker.com/r/kalilinux/kali-rolling Docker Hub http ...

  9. VMware安装linux系统CentOs7.4 mini版过程

    创建虚拟机 新建虚拟机 选择虚拟机的操作系统,本文中安装的CentOS属于linux 设置虚拟机的名称和虚拟机所使用的文件再物理机中的路径, 设置虚拟机的cup数量和核心数量,如果设置的不合适可以再创 ...

  10. 一个小而美的 C 语言项目

    我最近在学习 C 语言,看的一本书叫做 <C Primer Plus>,这本书对 C 语言的描写.特性介绍.代码示例都介绍的比较详细,是小白入门 C 语言非常不错的一本书,还有一本经典书叫 ...