ArcGIS多面体(multipatch)解析(一)_multipatch翻译_Esri成都的博客-程序员宅基地

技术标签: ArcGIS 3D  ArcGIS  3D  bxy  ArcGIS Desktop  ArcGIS Engine  Structure  

从几何学的角度来说,再复杂的三维形状都可以通过足够多,足够小的三角形组合起来表达。比如矩形可以表达成两个三角形,如下图:

圆柱形可以由多个三角形排列而成:


但ArcGIS中的多面体构成并没有采用这种“简单三角形法”来组织,而是由如下三种基础结构构成:

1)Triangle Strip ,笔者翻译为:三角片

2)Triangle Fan,翻译为:三角扇

3)Rings,翻译为:环

下面我们将对这三种结构进行一一讲解,首先是Triangle Strip。三角片可以有序的排列在一起形成一个多面体,ArcGIS记录该多面体并不记录所有三角形以及三角形的每个节点,而是只记录类型为Triangle Strip,并按顺序0,1,2,3,4,5...n记录节点顺序即可。如下图,这样记录是不是就简洁多了?


Triangle Fan(三角扇),与三角片类似,三角扇也可以有序的排列在一起构成一个多面体,只不过ArcGIS记录的节点顺序有所不同。ArcGIS首先记录下面这个多面体是由三角扇构成,再按照0,1,0,2,0,3,.....,0,n的顺序记录节点即可描述如下“金字塔”形状。(注意:下面这个配图不是平面图形,而是一个金字塔的立体形状,0点是金字塔尖,1,2,3,4节点是塔底)


下面难度偏高的部分来了,就是Ring(环)结构。环是个相对宽泛的定义,笔者简单描述为三个节点以上(不包括3个)构成的多边形,节点可以不是共平面的。比如四边形,比如下面三个不规则形状,其中第二个所有节点是共平面的,一、三不是,但一个环都是“一笔可以画成的”,中途不能“抬笔”。

图一


 图二

图三

有了三角片、三角扇和环这三种基础构成单元后,就可以按照平面构成多面体了。多面体由多个平面构成,但出于一些约束条件,逻辑上一个平面中能包括哪些东西,ArcGIS中是有明确规定的,关于这部分,我们下一篇再介绍。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/esricd/article/details/9163675

智能推荐

python中super的理解_super的理解和使用【转载】-程序员宅基地

原文链接https://www.jianshu.com/p/ff7e651e241a1.super是一个类,返回的是一个 proxy对象,目的是可以让你访问父类的一些特殊方法2.你得按照父类对应的特殊方法去传递参数,父类没有的参数就不要乱传3.不要一说到 super 就想到父类!super 指的是 MRO(method resolution order) 中的下一个类!另一篇比较好的文章:理解 ..._python中super的理解

python——文件的IO操作(IO==Input&Output)-程序员宅基地

学了这么久的python我们总得要完成一些文件相关的操作

SDAU训练指南-数论1 —H(最大公共多项式)_a prime number not more than 1500-程序员宅基地

Given two polynomials f(x) and g(x) in Zn, you have to find their GCD polynomial, ie, a polynomial r(x) (also in Zn) which has the greatest degree of all the polynomials in Zn that divide both f(x) an..._a prime number not more than 1500

Linux ALSA音频驱动之一:框架概述_alsa驱动-程序员宅基地

ALSA表示高级Linux声音体系结构(Advanced Linux Sound Architecture)。它由一系列内核驱动,应用程序编译接口(API)以及支持Linux下声音的实用程序组成。_alsa驱动

SPECIAL PAIRS(Sos_dp)-程序员宅基地

这个是一道救命dp入门题参考dalao的>>face<<friendly codes#include <bits/stdc++.h>using namespace std;#define _rep(i, a, b) for (int i = (a); i <= (b); ++i)#define _rev(i, a, b) for (int..._special pairs

手机App做aso优化过程中的主意事项_liuliangpuzi的博客-程序员宅基地

在为手机APP做ASO优化过程中,可能会遇到各式各样的问题,有的问题在网上搜索找不到解决办法,同行群里询问也容易各执一词,得不到准确的回答。此次针对苹果应用市场小马识途通过多年的ASO优化经验及优化实践中遇到的问题,并根据问题的重合度及关注度,整理了一些精品问题进行分享问题一:如何挑选做ASO优化的关键词,词不带量,竞争太大稳定不住,怎么办?回答:挑选关键词和SEO优化的思路和原则基本一致。1、在选词阶段搭建一个词库选词阶段,将自己产品所有的核心词(根据自己的用户属性,产品功能,都会有只属于自己的_app做aso

随便推点

获取apk 版本号 版本名-程序员宅基地

文章目录1、适用范围2、AndroidManifest.xml 添加需要的 版本号 版本名2、代码里获取 版本号 版本名1、适用范围有的时候会需要对 apk 进行版本升级,或者区分 apk 更新版本等,会用到 apk 版本名 ,版本号 等问题。2、AndroidManifest.xml 添加需要的 版本号 版本名如图:我们添加的版本号是: 1版本名是:1.12、代码里获取 ...

如何优雅的处理全局异常_怎么处理全局异常-程序员宅基地

前言异常处理是项目开发中绕不过的一个环节,一个优雅的全局异常处理可以迅速反馈给开发人员这些信息1、异常种类2、可能导致异常的原因3、导致异常出现的关键参数4、异常发生的时间5、发生异常的请求路径这些信息有助于开发人员迅速定位、处理异常,一个优秀的项目应该尽可能的将可能发生的异常进行捕获,再通过自定义的处理流程将异常信息反馈,而不是一味的抛出异常异常捕获流程ErrorCode 异常信息枚举​ 对于异常的处理我倾向于通过枚举类列举广义的异常种类,再通过附加信息对异常种类进行细分。​_怎么处理全局异常

计算机网络面试题-程序员宅基地

计算机网络面试题更新地址:计算机网络面试题计算机网络面试题文章目录计算机网络面试题第一章 网络模型OSI 全称OSI、TCP/IP 以及五层协议的体系结构之间的比较 五层协议体系结构中,每一层对应的协议各种协议的介绍路由设备与相关层Internet 采用哪种网络协议,该协议的主要层次结构是什么常见的路由选择协议,以及它们的区别谈谈对 TCP/IP 协议的理解 网络协议的三个核心要素是什么?各有什么作用? 点对点和端对端工作在哪层?工作机制是什么 第二章 物理层谈一谈网络时延由哪几个部分组成?各产

Android7.1添加开机启动服务程序关于Selinux权限问题说明_u:object_r:wqtest_exec:s0 shell_放大的EZ的博客-程序员宅基地

当需要添加一个binder服务xxx程序,并且设置成开机自启动时,需要按照如下步骤操作:第一步,我们可以在init.rc中添加了如下代码行:service xxxx /system/bin/xxxxclass mainuser rootgroup rootoneshotseclabel u:r:xxxx:s0 #这句是为加selinux权限添加的,android5.1以后不加则无法启动该服务编译img后烧到机器,发现服务xxx无法启动,kernel log中有如下提示(例如这里新加的_u:object_r:wqtest_exec:s0 shell

vscode 里打开ipynb文件.md_vscode怎么导出.ipynb项目-程序员宅基地

网上搜了好多方法,好麻烦,自己看完了整理一下:最好的教程???#0.在虚拟环境下安装jupyter notebookconda install jupyter notebook1.将ipynb转为.py文件每次vscode打开的时候都会问你一下行,import一下他就会给你建一个untitled.py文件2.打开与jupyter notebook交互窗口操作:ctrl+shif..._vscode怎么导出.ipynb项目

Javascript语言的10个古怪之处-程序员宅基地

原文参见:Javascript语言的10个古怪之处数据类型和定义1. Null是一个对象JavaScript的Null类型有个唯一值null,定义为没有意义的值。确实如此,Null是“没有意义的值”。下面的代码用于对于此说明进行简单验证:alert(typeof null); //alerts 'object'typeof值显示null是"object",但并不因此而应认为null就是一个对象实例。(JavaScript中的值都是对象实例:比如数字都是Number对象,对象都是Ob.