24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1276  |  回复: 14

zzahkj

木虫 (著名写手)

[交流] 【求助】ArcEngine二次开发如何生成等值线?已有3人参与

ArcEngine二次开发如何生成等值线?给点思路或者代码?最好是VB.net语言的!非常感谢!
回复此楼

» 收录本帖的淘帖专辑推荐

二次开发&仿真优化

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

不要迷恋哥,哥只是一个过客!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiangling1

金虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
xuliforever(金币+1): 欢迎常来地学版交流。 2011-04-12 22:33:54
引用回帖:
Originally posted by zzahkj at 2011-04-11 13:13:11:
ArcEngine二次开发如何生成等值线?给点思路或者代码?最好是VB.net语言的!非常感谢!

一下是Raster生成等高线的例子,希望对你有用:
   
    Dim pRasterLayer As ESRI.ArcGIS.Carto.IRasterLayer = New ESRI.ArcGIS.Carto.RasterLayer()
    pRasterLayer = AxMapControl1.Map.Layer(ComboBox1.SelectedIndex) //选择Raster图层

    Dim pIRaster As ESRI.ArcGIS.Geodatabase.IRaster = pRasterLayer.Raster
    Dim pSurfaceOp As ESRI.ArcGIS.GeoAnalyst.ISurfaceOp = New ESRI.ArcGIS.GeoAnalyst.RasterSurfaceOp()

    Dim pGeoDataset As ESRI.ArcGIS.Geodatabase.IGeoDataset
    pGeoDataset = pSurfaceOp.Contour(pIRaster, 50.0) //是获取等高线数据,50位等高线的间距。

    Dim pFeatureLayer As ESRI.ArcGIS.Carto.IFeatureLayer = New ESRI.ArcGIS.Carto.FeatureLayer()
    Dim pFeatureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass
    pFeatureClass = pGeoDataset

    pFeatureLayer.Name = "等高线"
    pFeatureLayer.FeatureClass = pFeatureClass

    AxMapControl1.Map.AddLayer(pFeatureLayer)
黄沙百战穿金甲,不破楼兰终不还!
2楼2011-04-11 18:50:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzahkj

木虫 (著名写手)

引用回帖:
Originally posted by xiangling1 at 2011-04-11 18:50:32:
一下是Raster生成等高线的例子,希望对你有用:
   
    Dim pRasterLayer As ESRI.ArcGIS.Carto.IRasterLayer = New ESRI.ArcGIS.Carto.RasterLayer()
    pRasterLayer = AxMapControl1.Map.Layer(ComboB ...

谢谢你的回答,我用你的代码试了一下,我只改了这句pRasterLayer = Main.AxMapControl1.Map.Layer(0)而出现以下错误时怎么回事啊?
无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“ESRI.ArcGIS.Carto.IRasterLayer”。此操作失败的原因是对 IID 为“{D02371C7-35F7-11D2-B1F2-00C04F8EDEFF}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。
不要迷恋哥,哥只是一个过客!
3楼2011-04-11 21:57:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiangling1

金虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
xuliforever(金币+1): 欢迎常来地学版交流。 2011-04-12 22:34:04
引用回帖:
Originally posted by zzahkj at 2011-04-11 21:57:32:
谢谢你的回答,我用你的代码试了一下,我只改了这句pRasterLayer = Main.AxMapControl1.Map.Layer(0)而出现以下错误时怎么回事啊?
无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“ESRI.A ...

应该是一下两种可能:
1、你的DEM有问题
2、你的图层索引不对

你跟踪代码,看一下那句对应的图层名称是不是DEM对应的那个图层?
黄沙百战穿金甲,不破楼兰终不还!
4楼2011-04-12 01:00:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzahkj

木虫 (著名写手)

引用回帖:
Originally posted by xiangling1 at 2011-04-12 01:00:39:
应该是一下两种可能:
1、你的DEM有问题
2、你的图层索引不对

你跟踪代码,看一下那句对应的图层名称是不是DEM对应的那个图层?

还是不大明白!pRasterLayer = AxMapControl1.Map.Layer(ComboBox1.SelectedIndex) //选择Raster图层
这是要选择什么图层?我需要对mxd做什么处理?我在之前是不是要编写代码做插值?刚刚接触这个,麻烦你说得详细点,谢了!
不要迷恋哥,哥只是一个过客!
5楼2011-04-12 14:38:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiangling1

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
你可以把你的工程和数据发给我,我看一下,帮你调调
黄沙百战穿金甲,不破楼兰终不还!
6楼2011-04-12 19:36:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiangling1

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by zzahkj at 2011-04-12 14:38:50:
还是不大明白!pRasterLayer = AxMapControl1.Map.Layer(ComboBox1.SelectedIndex) //选择Raster图层
这是要选择什么图层?我需要对mxd做什么处理?我在之前是不是要编写代码做插值?刚刚接触这个,麻烦你说得 ...

不需要编写其他代码做插值,只要对好DEM对应的那个图层即可,就是DEM对应图层的index
黄沙百战穿金甲,不破楼兰终不还!
7楼2011-04-12 19:39:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzahkj

木虫 (著名写手)

引用回帖:
Originally posted by xiangling1 at 2011-04-12 19:39:34:
不需要编写其他代码做插值,只要对好DEM对应的那个图层即可,就是DEM对应图层的index

我的是矢量图,里面没有生成等值线图的数据,数据存放在另外的文件中,我一点代码都没写呢?网上的代码有点乱,看得有点晕!呵呵
不要迷恋哥,哥只是一个过客!
8楼2011-04-12 21:44:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiangling1

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
做文档是加上就是,然后输好index,找到就行了,那是你的问题,代码是对的
黄沙百战穿金甲,不破楼兰终不还!
9楼2011-04-12 22:49:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzahkj

木虫 (著名写手)

引用回帖:
Originally posted by xiangling1 at 2011-04-12 22:49:46:
做文档是加上就是,然后输好index,找到就行了,那是你的问题,代码是对的

确实是我的问题,我试了一下,对于栅格数据时可以的,可我的是矢量数据,我如果要栅格化,怎么写的代码呢?
不要迷恋哥,哥只是一个过客!
10楼2011-04-13 10:44:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zzahkj 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见