zoukankan      html  css  js  c++  java
  • 【AO笔记】有关TIN数据集的常用介绍

    写论文查了很多TIN的接口和属性,特此来记录一下。

    转载请注明出处:博客园@秋意正寒,B站同名。

    未完待续

    1. Tin数据集在ArcGIS中的描述

    Tin数据集在磁盘中,被ArcGIS以文件夹形式管理。Tin数据集比较特殊,点、线、三角面根据一定拓扑关系组成,与栅格数据集(一张影像)、一个Shapefile平级。暂且不管其在代码层结构如何,总之,它就在硬盘里长得跟普通的文件夹是一样的,并且奇怪的是,其命名只支持小写(在ArcMap中)。

    // 补充一下,超图、MapGIS、QGIS等软件不知道对Tin数据的组织如何,但是除却公认的一些矢量格式(dwg、shp等)和一些公认的栅格格式(tif等),用文件夹组织高级别的数据集是一种折中的解决方案,当然,我本人尚未查阅OGC标准...

    2. Tin数据集在ArcObjects中的描述

    有关数据和数据库的部分,当然是Geodatabase类库了。

    Tin数据集在AO中由Tin类(或TinClass类)组织,由ITinWorkspace接口打开现有Tin数据集(但是创建却不是这个东西创建,与IFeatureWorkspace不同)。

    3. AO/AE中Tin数据集的常用接口

    • IWorkspaceFactory 
    • ITinWorkspace
    • ITin、ITinEdit、ITinSurface及升级接口、ITinAdvanced及升级接口
    • ITinNode、ITinTriangle、ITinEdge
    • ITinFeatureEdit

    以下逐一进行简单介绍。

    4. 一些案例

    4.1 打开Tin

    IWorkspaceFactory workspaceFactory = new TinWorkspaceFactoryClass();
    // 工作空间工厂的OpenFromFile()方法的第一个参数需要注意,如果是gdb则具体写到gdb的全名
    ITinWorkspace tinWorkspace = workspaceFactory.OpenFromFile(@"Tin数据集所在的文件夹", 0) as ITinWorkspace;
    ITin tin = tinWorkspace.OpenTin("Tin数据集的名称");

    4.2 创建Tin数据集

    ITin tin = new TinClass();
    ITinEdit tinEdit = tin as ITinEdit;
    // 用IEnvelope初始化,此步必须,否则抛异常
    tinEdit.InitNew(IEnvelope变量);
    // 如果需要加入数据或赋予空间参考,请使用以下注释的代码
    // tinEdit.Add*(); // 此处代表7个添加数据源的方法
    // tinEdit.Refresh();
    tinEdit.SaveAs(@"包括Tin名称的路径,名称全英文小写为佳", true);

    7个添加数据源的方法详见参考文档,此处截图

    • 第一个方法添加一个IFeatureClass以生成Tin,可以是点线面要素;
    • 第二个方法添加一个IFeatureCursor,使用IFeatureClass.Search()返回的查询型指针即可。
    • 第三个不知道,可以不管;
    • 第四个添加有Z字段的IPoint,测试中发现此方法不稳定;
    • 第五个添加IGeometry,需要指定Z字段;
    • 第六个添加有Z字段的IGeometry;
    • 第七个不知道,可以不管;

    七种方法中,第一、第二种方法最稳定,但是参数比较复杂;第四、五、六种方法较为简洁,可以用于局部刷新时使用。

    4.3 更新Tin

    主要是使用ITinEdit.Refresh()和Save()方法。

    // ITin转ITinEdit
    public void FreshTin(ITin tin){
        ITinEdit tinEdit = tin as ITinEdit;
        tinEdit.Refresh(); //Tin重新构网
        tinEdit.Save(); //Tin在硬盘上的数据更新
    }

    4.4 Tin数据集有关信息读取

    主要使用ITin接口与IGeoDataset接口。

    ITin接口可以获取Tin数据集的描述信息,例如顶点数、三角形数、边数等

    4.5 Tin数据集高级操作

    主要使用ITinAdvanced、ITinSurface接口。

    4.6 其他(编辑等)

  • 相关阅读:
    函数
    大对象数据LOB
    【缓冲流、转换流、序列化流】
    【字节流、字符流】
    【File类、递归】
    【缓冲流、转换流、序列化流】
    vee-validate的使用
    微信小程序第三方授权登录
    新电脑搭建vue项目步凑
    移动端300ms延迟问题和点击穿透问题
  • 原文地址:https://www.cnblogs.com/onsummer/p/8800606.html
Copyright © 2011-2022 走看看