超图对接NSDTF-DEM数据

306 篇文章 79 订阅

作者:吆鸡
##一、 DEM简介
###1、DEM分类
  数字高程模型(Digital Elevation Model),简称DEM,是通过有限的地形高程数据实现对地形曲面数字化模拟(即地形表面形态的数字化表达)它是用一组有序数值阵列形式表示地面高程的一种实体地面模型,是数字地形模型(Digital Terrain Model,简称DTM)的一个分支,其它各种地形特征值均可由此派生。
  DEM是在日常应用中经常用到的数据,做填挖方分析、三维场景展示、影像图的正射校正、水文分析等。在项目或者工程中经常需要购买一些DEM数据,其中最常见的DEM数据文件格式是*.dem,有两种格式:NSDTF-DEM和USGS-DEM。国内购买的DEM大多是NSDTF-DEM格式。
###2、NSDTF-DEM介绍

NSDTF-DEM是中华人民共和国国家标准地球空间数据交换格式,属于格网数据交换格式,超图平台支持直接导入该格式的数据。使用记事本打开NSDTF-DEM格式数据会发现它是明码,如:

![NSDTF-DEM文件格式示意图](https://img-blog.csdn.net/20160519154049093)

头文件每行数据对应的含义为:
  DataMark--------中国地球空间数据交换格式-格网数据交换格式(CNSDTF-RAS或CNSDTF-DEM)的标志。基本部分,不可缺省。
  Version--------该空间数据交换格式的版本号,如1.0。基本部分,不可缺省。
  Unit--------坐标单位,K表示公里,M表示米,D表示以度为单位的经纬度,S表示以度分秒表示的经纬度(此时坐标格式为DDDMMSS.SSSS, DDD为度, MM为分, SS.SSSS为秒)。基本部分,不可缺省。
  Alpha--------方向角。基本部分,不可缺省。
  Compress--------压缩方法。0表示不压缩,1表示游程编码。基本部分,不可缺省。
  Xo--------左上角原点X坐标。基本部分,不可缺省。
  Yo--------左上角原点Y坐标。基本部分,不可缺省。
  DX--------X方向的间距。基本部分,不可缺省。
  DY--------Y方向的间距。基本部分,不可缺省。
  Row--------行数。基本部分,不可缺省。
  Col--------列数。基本部分,不可缺省。
  HZoom--------高程放大倍率。基本部分,不可缺省。设置高程的放大倍率,使高程数据可以整数存贮,如高程精度精确到厘米,高程的放大倍率为100。如果不是DEM则HZoom为1。①
##二、 超图桌面平台导入DEM数据

###1、导入说明
  导入方法分为直接导入法和间接导入法。正常情况下,直接导入法是最简单快捷的办法。当使用直接导入法导入数据失败时,可能是NSDTF-DEM头文件信息不全或者损坏了,遇到这种情况时请尝试间接导入法。
###2、直接导入法
  SuperMap iDesktop 7C(2015)及以上版本支持NSDTF-DEM文件和USGSDEM文件的导入。导入操作步骤如下:
  (1)新建数据源。数据源集合节点右键单击,选择新建数据源。
  (2)导入数据集。数据源节点右键单击,点导入数据集。
  (3)弹出数据导入对话框之后,添加要导入的dem文件,然后修改相应的文件类型。NSDTF选GBDEM文件,USGS选DEM文件,最后点导入按钮即可。示意图如下:

![数据导入示意图](https://img-blog.csdn.net/20160519154748416)

结果如下图:

![导入结果示意图](https://img-blog.csdn.net/20160519154948371)

###3、间接导入法
  从DEM简介可得出:不同格式的DEM数据栅格单元数据值记录方式基本一样,主要是头文件信息不同。因此在直接导入不成功的情况下,可将*.dem文件用记事本打开,以NSDTF-DEM为例,只需把上述文件的头文件信息改为相对简单一点的格式,如下图所示形式:

![改NSDTF-DEM头文件为Grd格式](https://img-blog.csdn.net/20160519155101506)

再将文件扩展名修改为*.grd,将保存为某GIS平台的grd格式数据,之后再用数据导入能得到一样的结果。

##三、超图组件导入DEM数据
  SuperMap Objects .NET 6R(2012) Service Pack 3及以上版本支持NSDTF-DEM文件和USGSDEM文件的导入。
  涉及的类有国家标准 DEM 数据文件导入的参数设置类(ImportSettingGBDEM)和美国标准格网格式数据导入的参数设置类(ImportSettingUSGSDEM),以及导入数据类(DataImport)以下是SuperMap Objects .Net 8C(8.0.2)以NSDTF-DEM为例的测试关键代码:
###1、设置导入参数
  选择导入文件时设置好导入参数,包括目标数据源、导入之后的数据集名称、导入之后数据集的编码类型、导入的模式、是否创建金字塔等。

case FileType.GBDEM:
ImportSettingGBDEM settingGBDEM = new ImportSettingGBDEM();
// 结果设置
settingGBDEM.TargetDatasource = m_datasource;
settingGBDEM.TargetDatasetName = strDatasetName;
settingGBDEM.TargetEncodeType = EncodeType.None;
settingGBDEM.ImportMode = ImportMode.None;
// 转换参数
settingGBDEM.IsPyramidBuilt = false;
// 源文件信息
settingGBDEM.SourceFileCharset = Charset.Default;
settingGBDEM.SourceFilePath = node.GetValue("完整路径").ToString();
setting = settingGBDEM;
break;

![二次开发数据导入添加文件示意图](https://img-blog.csdn.net/20160519155801322)

###2、执行导入
  点击导入按钮时,构造好DataImport类,将之前参数设置添加进来,调用DataImport. Run即可,导入结果是ImportResult。

DataImport dataImport = new DataImport();
// 之前设置好的ImportSetting存在了node.Tag
ImportSetting setting = node.Tag as ImportSetting;
dataImport.ImportSettings.Add(setting);
ImportResult result = dataImport.Run();
![代码片段示意图](https://img-blog.csdn.net/20160519155953994)

导入结果如下图所示:

![导入结果示意图](https://img-blog.csdn.net/20160519160107542)

各类的详细情况请查阅SuperMap Objects .Net 8C联机帮助。③
##参考资料
①http://www.cnblogs.com/liuyunfeifei/articles/3518401.html
②http://www.cnblogs.com/liuyunfeifei/articles/3516947.html
③http://support.supermap.com.cn/DataWarehouse/WebDocHelp/iObjectsDotnetOnlineHelp8CSP2/SuperMapHelp.htm(或者在.Net组件完整压缩包解压出来的Help文件夹中SuperMap iObjects .NET Help.chm)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenLayers 是一个开源的 JavaScript 库,用于在 web 页面上显示地图。它可以与多种地图服务提供商的 API 进行集成,包括超图(SuperMap)。 如果你想在 web 页面上显示超图地图,可以使用 OpenLayers 的功能来加载和显示超图地图数据。首先,确保你已经引入了 OpenLayers 库的 JavaScript 文件。然后,可以按照以下步骤来使用 OpenLayers 加载超图地图数据: 1. 创建一个 HTML 元素,用于容纳地图,例如一个 `<div>` 元素。 2. 在 JavaScript 中,使用 OpenLayers 的 `Map` 类来创建一个地图实例,并指定地图的容器元素的 ID。 3. 创建一个超图的图层实例,使用 OpenLayers 的 `Layer.SuperMapREST` 类,并指定超图的 URL、图层名称等参数。 4. 将超图图层添加到地图实例中,使用 `addLayer` 方法。 5. 设置地图的视图范围和缩放级别,使用 `setView` 方法。 6. 最后,使用 `render` 方法将地图渲染到指定的容器元素中。 以下是一个简单的示例代码: ```html <!DOCTYPE html> <html> <head> <title>OpenLayers + 超图示例</title> <style> #map { width: 100%; height: 400px; } </style> </head> <body> <div id="map"></div> <script src="https://openlayers.org/en/v6.5.0/build/ol.js"></script> <script> var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() // 使用 OpenStreetMap 作为底图 }), new ol.layer.SuperMapREST({ url: 'http://your-supermap-server.com/iserver/services/map-地图名/rest/maps/地图名称', layersID: '图层名称' }) ], view: new ol.View({ center: ol.proj.fromLonLat([经度, 纬度]), zoom: 缩放级别 }) }); </script> </body> </html> ``` 请将代码中的 `http://your-super

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值