买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】实现ESRI TIN模型转换为OBJ三维模型的方法及系统_南京泛在地理信息产业研究院有限公司;南京师范大学_201910583570.0 

申请/专利权人:南京泛在地理信息产业研究院有限公司;南京师范大学

申请日:2019-07-01

公开(公告)日:2023-01-24

公开(公告)号:CN110415345B

主分类号:G06T17/05

分类号:G06T17/05;G06T19/20

优先权:

专利状态码:有效-授权

法律状态:2023.01.24#授权;2019.11.29#实质审查的生效;2019.11.05#公开

摘要:本发明公开了一种实现ESRITIN模型转换为OBJ三维模型的方法及系统,方法包括:1读取地质的ESRITIN模型数据,从中提取出所有节点,生成节点图层LayerPts;2基于节点图层LayerPts,构建二维节点K‑D树nodeKdTree;3从地质的ESRITIN模型数据中提取出所有三角面,生成三角面图层LayerTris;4根据用户指定OBJ文件的名称和存储位置,创建空的OBJ文件;5遍历节点图层LayerPts中所有节点,将每个节点的横坐标、纵坐标和高程信息按照OBJ文件顶点格式规范写入创建的OBJ文件中;6遍历三角面图层LayerTris中所有三角面,并根据K‑D树nodeKdTree,查询每一个三角面的3个端点的索引值,将其写入创建的OBJ文件中,此时的OBJ文件即为转换得到的OBJ三维模型数据。本发明转换准确率高,复杂度低。

主权项:1.一种实现ESRITIN模型转换为OBJ三维模型的方法,其特征在于包括:1读取地质的ESRITIN模型数据,从中提取出所有节点,生成节点图层LayerPts;2基于节点图层LayerPts,构建二维节点K-D树nodeKdTree;3从地质的ESRITIN模型数据中提取出所有三角面,生成三角面图层LayerTris;4根据用户指定OBJ文件的名称和存储位置,创建空的OBJ文件;5遍历节点图层LayerPts中所有节点,将每个节点的横坐标、纵坐标和高程信息按照OBJ文件顶点格式规范写入创建的OBJ文件中;6遍历三角面图层LayerTris中所有三角面,并根据K-D树nodeKdTree,查询每一个三角面的3个端点的索引值,将其写入创建的OBJ文件中,此时的OBJ文件即为转换得到的OBJ三维模型数据,具体包括:6-1读取三角面图层LayerTris;6-2读取LayerTris中的任意一个三角面Trii,将三角面Trii的3个端点保存至三角面端点集合EdgePonintsi={epj|j=1,2,3},epj表示集合中第j个端点;6-3对于端点集合EdgePonintsi中每一端点,根据二维节点K-D树nodeKdTree,利用KNN算法,查询nodeKdTree中横纵坐标与该端点的横纵坐标相同的树节点,获取其索引值并保存至索引值集合Indexi={idxk|k=1,2,3},idxk表示集合中第k个索引值;6-4按照OBJ文件几何面格式规范,将三角面Trii的3个端点的索引值写入OBJ文件中;6-5重复步骤6-2至步骤6-4,直至处理完所有三角面;6-6信息写入完成后的OBJ文件即为转换得到的OBJ三维模型数据。

全文数据:实现ESRITIN模型转换为OBJ三维模型的方法及系统技术领域本发明涉地理信息技术,尤其涉及一种实现ESRITIN模型转换为OBJ三维模型的方法及系统。背景技术不规则三角网TriangulatedIrregularNetwork,TIN模型是城市空间三维地质建模的一种重要数据源,也是地理空间信息的重要表达方法之一,在三维地质建模中常常在此模型的基础上去构建体模型。地质TIN模型的数据格式有多种,其中以ESRITIN数据模型格式最为常见。但目前支持ESRITIN模型进行裁剪、缝合和拼接等空间操作的软件较少,难以满足实际需求。而OBJ模型适合用于3D软件模型之间的互导AliasWavefront公司开发的一种标准3D模型文件格式,目前几乎所有知名的3D软件如3DSMax、Maya和SketchUp等都支持OBJ文件的读写,这些3D软件都较好的支持了模型的编辑、渲染等操作。因此,可将ESRITIN模型转换为OBJ三维模型,以实现上述空间操作,但是目前尚缺乏有效的模型转换方法。发明内容发明目的:本发明针对现有技术存在的问题,提供一种实现ESRITIN模型转换为OBJ三维模型的方法及系统,可以实现ESRITIN到OBJ的自动转换。技术方案:本发明所述的实现ESRITIN模型转换为OBJ三维模型的方法包括:1读取地质的ESRITIN模型数据,从中提取出所有节点,生成节点图层LayerPts;2基于节点图层LayerPts,构建二维节点K-D树nodeKdTree;3从地质的ESRITIN模型数据中提取出所有三角面,生成三角面图层LayerTris;4根据用户指定OBJ文件的名称和存储位置,创建空的OBJ文件;5遍历节点图层LayerPts中所有节点,将每个节点的横坐标、纵坐标和高程信息按照OBJ文件顶点格式规范写入创建的OBJ文件中;6遍历三角面图层LayerTris中所有三角面,并根据K-D树nodeKdTree,查询每一个三角面的3个端点的索引值,将其写入创建的OBJ文件中,此时的OBJ文件即为转换得到的OBJ三维模型数据。进一步的,步骤2具体包括:2-1遍历节点图层LayerPts中所有的节点,并将其保存至节点数据集合Points;2-2利用K-D树构建方法,以节点数据集合Points中所有节点的横纵坐标作为空间分割依据,以节点的横纵坐标和索引值作为K-D树节点的数据项,构建二维节点K-D树,生成二维节点K-D树nodeKdTree。进一步的,步骤5中将节点信息写入创建的OBJ文件中的具体格式为:一行写入一个节点信息,包括从前到后写入的字符v、该节点横坐标x、该节点纵坐标y和该节点高程z[w],其中,w为可选项,表示颜色值,其范围为0到1.0,默认值为1.0。进一步的,步骤6具体包括:6-1读取三角面图层LayerTris;6-2读取LayerTris中的任意一个三角面Trii,将三角面Trii的3个端点保存至三角面端点集合EdgePonintsi={epj|j=1,2,3},epj表示集合中第j个端点;6-3对于端点集合EdgePonintsi中每一端点,根据二维节点K-D树nodeKdTree,利用KNN算法,查询nodeKdTree中横纵坐标与该端点的横纵坐标相同的树节点,获取其索引值并保存至索引值集合Indexi={idxk|k=1,2,3},idxk表示集合中第k个索引值;6-4按照OBJ文件几何面格式规范,将三角面Trii的3个端点的索引值写入OBJ文件中;6-5重复步骤6-2至步骤6-4,直至处理完所有三角面;6-6信息写入完成后的OBJ文件即为转换得到的OBJ三维模型数据。进一步的,步骤6-4中将三角面Trii的3个端点的索引值写入OBJ文件的具体格式为:一行写入一个三角面信息,包括从前到后写入的字符f、第一个端点索引值、第二个端点索引值和第三个端点索引值。本发明所述的实现ESRITIN模型转换为OBJ三维模型的系统包括:节点图层生成模块,用于读取地质的ESRITIN模型数据,从中提取出所有节点,生成节点图层LayerPts;K-D树构建模块,用于基于节点图层LayerPts,构建二维节点K-D树nodeKdTree;三角面图层生成模块,用于从地质的ESRITIN模型数据中提取出所有三角面,生成三角面图层LayerTris;OBJ文件创建模块,用于根据用户指定OBJ文件的名称和存储位置,创建空的OBJ文件;顶点信息写入模块,用于遍历节点图层LayerPts中所有节点,将每个节点的横坐标、纵坐标和高程信息按照OBJ文件顶点格式规范写入创建的OBJ文件中;三角面信息写入模块,用于遍历三角面图层LayerTris中所有三角面,并根据K-D树nodeKdTree,查询每一个三角面的3个端点的索引值,将其写入创建的OBJ文件中,此时的OBJ文件即为转换得到的OBJ三维模型数据。进一步的,所述K-D树构建模块具体包括:节点提取单元,用于遍历节点图层LayerPts中所有的节点,并将其保存至节点数据集合Points;K-D树生成单元,用于利用K-D树构建方法,以节点数据集合Points中所有节点的横纵坐标作为空间分割依据,以节点的横纵坐标和索引值作为K-D树节点的数据项,生成二维节点K-D树nodeKdTree。进一步的,所述顶点信息写入模块中将节点信息写入创建的OBJ文件中的具体格式为:一行写入一个节点信息,包括从前到后写入的字符v、该节点横坐标x、该节点纵坐标y和该节点高程z[w],其中,w为可选项,表示颜色值,其范围为0到1.0,默认值为1.0。进一步的,所述三角面信息写入模块执行的步骤具体包括:6-1读取三角面图层LayerTris;6-2读取LayerTris中的任意一个三角面Trii,将三角面Trii的3个端点保存至三角面端点集合EdgePonintsi={epj|j=1,2,3},epj表示集合中第j个端点;6-3对于端点集合EdgePonintsi中每一端点,根据二维节点K-D树nodeKdTree,利用KNN算法,查询nodeKdTree中横纵坐标与该端点的横纵坐标相同的树节点,获取其索引值并保存至索引值集合Indexi={idxk|k=1,2,3},idxk表示集合中第k个索引值;6-4按照OBJ文件几何面格式规范,将三角面Trii的3个端点的索引值写入OBJ文件中;6-5重复步骤6-2至步骤6-4,直至处理完所有三角面;6-6信息写入完成后的OBJ文件即为转换得到的OBJ三维模型数据。进一步的,所述三角面信息写入模块将三角面Trii的3个端点的索引值写入OBJ文件的具体格式为:一行写入一个三角面信息,包括从前到后写入的字符f、第一个端点索引值、第二个端点索引值和第三个端点索引值。有益效果:本发明与现有技术相比,其显著优点是:本发明提供一种实现ESRITIN模型转换为OBJ三维模型的方法及系统,可以实现ESRITIN到OBJ的自动转换该方法不仅能够准确有效的实现数据格式的转换,并且算法复杂度低。附图说明图1是本发明提供的实现ESRITIN模型转换为OBJ三维模型的方法的流程示意图;图2是南京仙林某区域ESRITIN模型图;图3为节点图层LayerPts图;图4为三角面图层LayerTris图;图5为OBJ文件中的顶点数据内容图;图6为OBJ文件中的三角面数据内容图;图7为本发明实施例生成的OBJ三维模型图。具体实施方式本实施例提供了一种实现ESRITIN模型转换为OBJ三维模型的方法,具体流程如图1所示,本实施例以南京仙林某区域ESRITIN模型图2作为源数据进行处理,包括以下步骤:1读取地质的ESRITIN模型数据,从中提取出所有节点,生成节点图层LayerPts。其中,提取节点时采用ArcGISEngine调用ArcGISToolBox中的TINNode工具。本实施例中,提取了ESRITIN模型中所有的节点,得到节点图层LayerPts图3,该图层含有12086个点要素。2基于节点图层LayerPts,构建二维节点K-D树nodeKdTree。该步骤具体包括:2-1遍历节点图层LayerPts中所有的节点,并将其保存至节点数据集合Points;本实施例中,节点数据集合Points共12086个节点数据;2-2利用K-D树构建方法参见Finley,A.O.,McRoberts,R.E.2008.Efficientk-nearestneighborsearchesformulti-sourceforestattributemapping.RemoteSensingofEnvironment,1125,2203-2211,以节点数据集合Points中所有节点的横纵坐标作为空间分割依据,以节点的横纵坐标和索引值作为K-D树节点的数据项,构建二维节点K-D树,生成二维节点K-D树nodeKdTree。3从地质的ESRITIN模型数据中提取出所有三角面,生成三角面图层LayerTris。其中,三角面提取采用ArcGISEngine调用ArcGISToolBox中的TINTriangle工具,本实施例中得到的三角面图层LayerTris如图4所示,该图层含有21244个三角面要素。4根据用户指定OBJ文件的名称和存储位置,创建空的OBJ文件。本实施例中,在系统盘目录下创建了文件名称为“TIN2OBJ”的OBJ文件。5遍历节点图层LayerPts中所有节点,将每个节点的横坐标、纵坐标和高程信息按照OBJ文件顶点格式规范写入创建的OBJ文件中。具体的,将节点信息写入创建的OBJ文件中的具体格式为:一行写入一个节点信息,包括从前到后写入的字符v、该节点横坐标x、该节点纵坐标y和该节点高程z[w],其中,w为可选项,表示颜色值,其范围为0到1.0,默认值为1.0。例如,某节点横坐标为142971.870117188,纵坐标为152995.910095215,高程为0,无颜色值,则可以写入数据“v142971.870117188152995.9100952150”,本实施例中,将节点数据集合Points中的12086个点的坐标信息写入了OBJ文件中,如图5所示。6遍历三角面图层LayerTris中所有三角面,并根据K-D树nodeKdTree,查询每一个三角面的3个端点的索引值,将其写入创建的OBJ文件中,此时的OBJ文件即为转换得到的OBJ三维模型数据。该步骤具体包括:6-1读取三角面图层LayerTris;6-2读取LayerTris中的任意一个三角面Trii,将三角面Trii的3个端点保存至三角面端点集合EdgePonintsi={epj|j=1,2,3},epj表示集合中第j个端点;6-3对于端点集合EdgePonintsi中每一端点,根据二维节点K-D树nodeKdTree,利用KNNK-NearestNeighbor算法,查询nodeKdTree中横纵坐标与该端点的横纵坐标相同的树节点,获取其索引值并保存至索引值集合Indexi={idxk|k=1,2,3},idxk表示集合中第k个索引值;6-4按照OBJ文件几何面格式规范,将三角面Trii的3个端点的索引值写入OBJ文件中;具体格式为:一行写入一个三角面信息,包括从前到后写入的字符f、第一个端点索引值、第二个端点索引值和第三个端点索引值;例如,某三角面三个端点索引值为3、2、1,则可以写入数据“f321”;6-5重复步骤6-2至步骤6-4,直至处理完所有三角面;6-6信息写入完成后的OBJ文件即为转换得到的OBJ三维模型数据。本实施例中,将三角面图层LayerTris中的21244个三角面的顶点索引信息写入了OBJ文件中,如图6所示。最终实现ESRITIN模型向OBJ三维模型的自动转换,其OBJ三维模型在三维软件Blend2.8系统中的效果如图7所示。本实施例还提供了一种实现ESRITIN模型转换为OBJ三维模型的系统,该系统与上述方法一一对应,具体包括:节点图层生成模块,用于读取地质的ESRITIN模型数据,从中提取出所有节点,生成节点图层LayerPts;K-D树构建模块,用于基于节点图层LayerPts,构建二维节点K-D树nodeKdTree;三角面图层生成模块,用于从地质的ESRITIN模型数据中提取出所有三角面,生成三角面图层LayerTris;OBJ文件创建模块,用于根据用户指定OBJ文件的名称和存储位置,创建空的OBJ文件;顶点信息写入模块,用于遍历节点图层LayerPts中所有节点,将每个节点的横坐标、纵坐标和高程信息按照OBJ文件顶点格式规范写入创建的OBJ文件中;具体格式为:一行写入一个节点信息,包括从前到后写入的字符v、该节点横坐标x、该节点纵坐标y和该节点高程z[w],其中,w为可选项,表示颜色值,其范围为0到1.0,默认值为1.0;三角面信息写入模块,用于遍历三角面图层LayerTris中所有三角面,并根据K-D树nodeKdTree,查询每一个三角面的3个端点的索引值,将其写入创建的OBJ文件中,此时的OBJ文件即为转换得到的OBJ三维模型数据。其中,所述K-D树构建模块具体包括:节点提取单元,用于遍历节点图层LayerPts中所有的节点,并将其保存至节点数据集合Points;K-D树生成单元,用于利用K-D树构建方法,以节点数据集合Points中所有节点的横纵坐标作为空间分割依据,以节点的横纵坐标和索引值作为K-D树节点的数据项,生成二维节点K-D树nodeKdTree。其中,所述顶点信息写入模块中将节点信息写入创建的OBJ文件中的其中,所述三角面信息写入模块执行的步骤具体包括:6-1读取三角面图层LayerTris;6-2读取LayerTris中的任意一个三角面Trii,将三角面Trii的3个端点保存至三角面端点集合EdgePonintsi={epj|j=1,2,3},epj表示集合中第j个端点;6-3对于端点集合EdgePonintsi中每一端点,根据二维节点K-D树nodeKdTree,利用KNN算法,查询nodeKdTree中横纵坐标与该端点的横纵坐标相同的树节点,获取其索引值并保存至索引值集合Indexi={idxk|k=1,2,3},idxk表示集合中第k个索引值;6-4按照OBJ文件几何面格式规范,将三角面Trii的3个端点的索引值写入OBJ文件中;具体格式为:一行写入一个三角面信息,包括从前到后写入的字符f、第一个端点索引值、第二个端点索引值和第三个端点索引值;6-5重复步骤6-2至步骤6-4,直至处理完所有三角面;6-6信息写入完成后的OBJ文件即为转换得到的OBJ三维模型数据。以上所揭露的仅为本发明一种较佳实施例而已,不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

权利要求:1.一种实现ESRITIN模型转换为OBJ三维模型的方法,其特征在于包括:1读取地质的ESRITIN模型数据,从中提取出所有节点,生成节点图层LayerPts;2基于节点图层LayerPts,构建二维节点K-D树nodeKdTree;3从地质的ESRITIN模型数据中提取出所有三角面,生成三角面图层LayerTris;4根据用户指定OBJ文件的名称和存储位置,创建空的OBJ文件;5遍历节点图层LayerPts中所有节点,将每个节点的横坐标、纵坐标和高程信息按照OBJ文件顶点格式规范写入创建的OBJ文件中;6遍历三角面图层LayerTris中所有三角面,并根据K-D树nodeKdTree,查询每一个三角面的3个端点的索引值,将其写入创建的OBJ文件中,此时的OBJ文件即为转换得到的OBJ三维模型数据。2.根据权利要求1所述的实现ESRITIN模型转换为OBJ三维模型的方法,其特征在于:步骤2具体包括:2-1遍历节点图层LayerPts中所有的节点,并将其保存至节点数据集合Points;2-2利用K-D树构建方法,以节点数据集合Points中所有节点的横纵坐标作为空间分割依据,以节点的横纵坐标和索引值作为K-D树节点的数据项,构建二维节点K-D树,生成二维节点K-D树nodeKdTree。3.根据权利要求1所述的实现ESRITIN模型转换为OBJ三维模型的方法,其特征在于:步骤5中将节点信息写入创建的OBJ文件中的具体格式为:一行写入一个节点信息,包括从前到后写入的字符v、该节点横坐标x、该节点纵坐标y和该节点高程z[w],其中,w为可选项,表示颜色值,其范围为0到1.0,默认值为1.0。4.根据权利要求1所述的实现ESRITIN模型转换为OBJ三维模型的方法,其特征在于:步骤6具体包括:6-1读取三角面图层LayerTris;6-2读取LayerTris中的任意一个三角面Trii,将三角面Trii的3个端点保存至三角面端点集合EdgePonintsi={epj|j=1,2,3},epj表示集合中第j个端点;6-3对于端点集合EdgePonintsi中每一端点,根据二维节点K-D树nodeKdTree,利用KNN算法,查询nodeKdTree中横纵坐标与该端点的横纵坐标相同的树节点,获取其索引值并保存至索引值集合Indexi={idxk|k=1,2,3},idxk表示集合中第k个索引值;6-4按照OBJ文件几何面格式规范,将三角面Trii的3个端点的索引值写入OBJ文件中;6-5重复步骤6-2至步骤6-4,直至处理完所有三角面;6-6信息写入完成后的OBJ文件即为转换得到的OBJ三维模型数据。5.根据权利要求4所述的实现ESRITIN模型转换为OBJ三维模型的方法,其特征在于:步骤6-4中将三角面Trii的3个端点的索引值写入OBJ文件的具体格式为:一行写入一个三角面信息,包括从前到后写入的字符f、第一个端点索引值、第二个端点索引值和第三个端点索引值。6.一种实现ESRITIN模型转换为OBJ三维模型的系统,其特征在于包括:节点图层生成模块,用于读取地质的ESRITIN模型数据,从中提取出所有节点,生成节点图层LayerPts;K-D树构建模块,用于基于节点图层LayerPts,构建二维节点K-D树nodeKdTree;三角面图层生成模块,用于从地质的ESRITIN模型数据中提取出所有三角面,生成三角面图层LayerTris;OBJ文件创建模块,用于根据用户指定OBJ文件的名称和存储位置,创建空的OBJ文件;顶点信息写入模块,用于遍历节点图层LayerPts中所有节点,将每个节点的横坐标、纵坐标和高程信息按照OBJ文件顶点格式规范写入创建的OBJ文件中;三角面信息写入模块,用于遍历三角面图层LayerTris中所有三角面,并根据K-D树nodeKdTree,查询每一个三角面的3个端点的索引值,将其写入创建的OBJ文件中,此时的OBJ文件即为转换得到的OBJ三维模型数据。7.根据权利要求6所述的实现ESRITIN模型转换为OBJ三维模型的系统,其特征在于:所述K-D树构建模块具体包括:节点提取单元,用于遍历节点图层LayerPts中所有的节点,并将其保存至节点数据集合Points;K-D树生成单元,用于利用K-D树构建方法,以节点数据集合Points中所有节点的横纵坐标作为空间分割依据,以节点的横纵坐标和索引值作为K-D树节点的数据项,生成二维节点K-D树nodeKdTree。8.根据权利要求6所述的实现ESRITIN模型转换为OBJ三维模型的系统,其特征在于:所述顶点信息写入模块中将节点信息写入创建的OBJ文件中的具体格式为:一行写入一个节点信息,包括从前到后写入的字符v、该节点横坐标x、该节点纵坐标y和该节点高程z[w],其中,w为可选项,表示颜色值,其范围为0到1.0,默认值为1.0。9.根据权利要求6所述的实现ESRITIN模型转换为OBJ三维模型的系统,其特征在于:所述三角面信息写入模块执行的步骤具体包括:6-1读取三角面图层LayerTris;6-2读取LayerTris中的任意一个三角面Trii,将三角面Trii的3个端点保存至三角面端点集合EdgePonintsi={epj|j=1,2,3},epj表示集合中第j个端点;6-3对于端点集合EdgePonintsi中每一端点,根据二维节点K-D树nodeKdTree,利用KNN算法,查询nodeKdTree中横纵坐标与该端点的横纵坐标相同的树节点,获取其索引值并保存至索引值集合Indexi={idxk|k=1,2,3},idxk表示集合中第k个索引值;6-4按照OBJ文件几何面格式规范,将三角面Trii的3个端点的索引值写入OBJ文件中;6-5重复步骤6-2至步骤6-4,直至处理完所有三角面;6-6信息写入完成后的OBJ文件即为转换得到的OBJ三维模型数据。10.根据权利要求9所述的实现ESRITIN模型转换为OBJ三维模型的系统,其特征在于:所述三角面信息写入模块将三角面Trii的3个端点的索引值写入OBJ文件的具体格式为:一行写入一个三角面信息,包括从前到后写入的字符f、第一个端点索引值、第二个端点索引值和第三个端点索引值。

百度查询: 南京泛在地理信息产业研究院有限公司;南京师范大学 实现ESRI TIN模型转换为OBJ三维模型的方法及系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。