欢迎您来到GIS动力

加入收藏 免费注册 用户登陆 帮助中心
首页 新闻动态 技术专栏 银杏树下 学习考研 软件下载 求职招聘 许愿瓶 节日祝福 用户中心 精彩推荐 资源搜索 地图
专栏导航: AO开发 | SO开发 | ArcGIS桌面 | 超图桌面 | 开发语言 | 数据库 | WebGIS | 银杏文学 | 研究生考题 | FreeMap 谈天说地
   您现在位于: 首页技术专栏ArcGIS应用与开发AO开发 → 正文
从TIN获取任意坐标点高程
07-11-15 09:12:24 作者:xc# 出处:iCanX
项目中碰到要处理TIN数据地面高程问题,于是开发了个小工具,主要用AE的ITinLayer接口,实现获取任意坐标点的高程值,进一步扩展实用功能,如下:
   鼠标点击获取高程值,根据TIN数据批量处理原始数据模板中的高程值,批量更新SDE 中管线数据地面高程,达到快速更新现状数据目的,客户反映满意。
   主要实现如下:

 1 Private   Sub  Button1_Click( ByVal  sender  As  System.Object,  ByVal  e  As  System.EventArgs)  Handles  Button1.Click
 2          If   Me .FolderBrowserDialog1.ShowDialog  =  DialogResult.OK  Then
 3              If   Me .FolderBrowserDialog1.SelectedPath  <>   ""   Then
 4                  Try
 5                      Dim  Path  As   String   =   Me .FolderBrowserDialog1.SelectedPath
 6                      Dim  FatherFolder, Folder  As   String
 7                      Dim  pTinWorkspaceFactory  As  IWorkspaceFactory
 8                      Dim  pTinWorkspace  As  ITinWorkspace
 9
10                     pTinWorkspaceFactory  =   New  TinWorkspaceFactoryClass
11                     FatherFolder  =  Path.Substring( 0 , Path.LastIndexOf( " \ " c)  +   1 )
12                     pTinWorkspace  =  pTinWorkspaceFactory.OpenFromFile(FatherFolder,  0 )
13
14                     pTinLayer  =   New  TinLayerClass
15                      Dim  pTin  As  ITin  =   New  TinClass
16
17                     Folder  =  Path.Substring(Path.LastIndexOf( " \ " c))
18                     pTin  =  pTinWorkspace.OpenTin(Folder)
19                     pTinLayer.Dataset  =  pTin
20                      Me .AxMapControl1.Map.ClearLayers()
21                      Me .AxMapControl1.Map.AddLayer(pTinLayer)
22                  Catch  ex  As  Exception
23                     MessageBox.Show( " 打开TIN数据出现错误! "   +  ex.Message,  " 异常 " , MessageBoxButtons.OK, MessageBoxIcon.Information)
24                  End   Try
25              End   If
26          End   If
27      End Sub

 

 

 1 Private   Function  ShowZ( ByVal  x  As   Double ByVal  y  As   Double Optional   ByVal  OnlyReturn  As   Boolean   =   False As   String
 2          Try
 3              If   Me .AxMapControl1.Map.LayerCount  =   0   Then
 4                 MessageBox.Show( " TIN数据未加载 " " 注意 " , MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
 5                  Exit Function
 6              End   If
 7              Dim  pTinLayer  As  ITinLayer
 8              Dim  pFuncSurf  As  IFunctionalSurface
 9             pTinLayer  =   Me .AxMapControl1.Map.Layer( 0 )
10              If  pTinLayer  Is   Nothing   Then
11                 MessageBox.Show( " TIN数据未加载 " " 注意 " , MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
12                  Exit Function
13              End   If
14             pFuncSurf  =  pTinLayer.Dataset
15              Dim  z  As   Double
16             z  =  pFuncSurf.Z(x, y)
17
18              If  OnlyReturn  =   True   Then
19                  Return  String2String(z.ToString())
20              End   If
21
22              If  z.ToString()  =   " 非数字 "   Then
23                 MessageBox.Show( " 坐标超出范围! " " 警告 " , MessageBoxButtons.OK, MessageBoxIcon.Information)
24              Else
25                 MessageBox.Show( " 该点高程值: "   +  String2String(z.ToString()),  "" , MessageBoxButtons.OK, MessageBoxIcon.Information)
26              End   If
27          Catch  ex  As  Exception
28             MessageBox.Show( " 出现异常  "   +  ex.Message,  "" , MessageBoxButtons.OK, MessageBoxIcon.Information)
29          End   Try
30      End Function

9 7 3 1 2 4 8 :

(本文已被浏览 次)
发布人:admin
推荐给好友:发送给好友
上篇新闻:
下篇新闻:
相关评论
发表我的评论
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  •   相关文章  
    OCR和VOTING DISK的MIRROR DISK的添加和删除
    由不规则离散点集生成TIN与GRID DEM
    OCR和VOTING DISK的MIRROR DISK的添加和删除
    台湾域名市场中英文.TW占87.3%

    关于我们 友情链接 ┋ 与我在线 ┋ 管理 ┋ TOP
    网站当前版本:GisPower CMS V3.0
    『GIS 动力』- http://www.gispower.org/
    联系我们:webmaster#gispower.org
    Copyright (c) 2003-2007 GisPOwer.Org. All Rights Reserved.

                   滇ICP备05006901号