ISurfaceOp 接口生成等高线
(1)ISurfaceOp.Contour 根据DEM生成等高线图层:
private void button1_Click(object sender, EventArgs e)
{
//得到Raster
ILayer tLayer=this.axMapControl1.get_Layer(0);
IRasterLayer tRasterLayer=(IRasterLayer)tLayer;
IFeatureClass tFeatureClass=null;
IGeoDataset tGeodataset=null;
//使用接口 参数(Raster,等高线间距,基值)
ISurfaceOp tSurfaceop = new RasterSurfaceOpClass();
object obj = 0;
tGeodataset=tSurfaceop.Contour((IGeoDataset)tRasterLayer.Raster, 10, ref obj);
//判断是否生成等高线层,如果生成,加载到Map中
if (tGeodataset != null)
{
tFeatureClass = (IFeatureClass)tGeodataset;
if (tFeatureClass != null)
{
IFeatureLayer tFeatureLayer = new FeatureLayerClass();
tFeatureLayer.FeatureClass = tFeatureClass;
this.axMapControl1.AddLayer((ILayer)tFeatureLayer);
this.axMapControl1.Refresh();
}
}
}
(2) ISurfaceOp.ContourAsPolyline 根据已知点,返回穿过改点的等高线和改点的高程
private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)
{
//通过鼠标获取点击的点坐标
IPoint tPoint = new PointClass();
tPoint.X = e.mapX;
tPoint.Y = e.mapY;
//得到Raster
ILayer tLayer = this.axMapControl1.get_Layer(0);
IRasterLayer tRasterLayer = (IRasterLayer)tLayer;
ISurfaceOp tSurfaceop = new RasterSurfaceOpClass();
//定义返回的线
IPolyline tPolygline = new PolylineClass();
//定义返回的高程点
double tEve = 0;
tSurfaceop.ContourAsPolyline((IGeoDataset)tRasterLayer.Raster, tPoint, out tPolygline, out tEve);//tSurfaceop.Contour((IGeoDataset)tRasterLayer.Raster, 10, ref obj);
//把生成的等高线画到Map上
ILineElement tLineElement = new LineElementClass();
IElement tElement = (IElement)tLineElement;
tElement.Geometry = tPolygline;
this.axMapControl1.ActiveView.GraphicsContainer.AddElement(tElement, 0);
//刷新Map
this.axMapControl1.Refresh();
}
(3)ISurfaceOp.ContourList 根据一系列高程点生成等高线图层:
private void button1_Click(object sender, EventArgs e)
{
//得到Raster
ILayer tLayer = this.axMapControl1.get_Layer(0);
IRasterLayer tRasterLayer = (IRasterLayer)tLayer;
//定义高程点数组
double[] tDouble = new double[] { 100, 120, 150, 200 };
IFeatureClass tFeatureClass = null;
IGeoDataset tGeodataset = null;
//使用接口
ISurfaceOp tSurfaceop = new RasterSurfaceOpClass();
object obj = tDouble;
tGeodataset = tSurfaceop.ContourList((IGeoDataset)tRasterLayer.Raster, ref obj);
//判断是否生成等高线层,如果生成,加载到Map中
if (tGeodataset != null)
{
tFeatureClass = (IFeatureClass)tGeodataset;
if (tFeatureClass != null)
{
IFeatureLayer tFeatureLayer = new FeatureLayerClass();
tFeatureLayer.FeatureClass = tFeatureClass;
this.axMapControl1.AddLayer((ILayer)tFeatureLayer);
this.axMapControl1.Refresh();
}
}
}
(4)ISurfaceOp.ContoursAsPolylines根据一系列点生成多根等高线
//定义点坐标集合
IPointCollection _PointCollect = new MultipointClass();
private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)
{
//通过鼠标获取点击的点坐标集合
IPoint tPoint = new PointClass();
tPoint.X = e.mapX;
tPoint.Y = e.mapY;
object obj = Type.Missing;
_PointCollect.AddPoint(tPoint, ref obj, ref obj);
}
private void button1_Click(object sender, EventArgs e)
{
//得到Raster
ILayer tLayer = this.axMapControl1.get_Layer(0);
IRasterLayer tRasterLayer = (IRasterLayer)tLayer;
ISurfaceOp tSurfaceop = new RasterSurfaceOpClass();
//定义返回的线集合
IGeometryCollection tGeometryCollection;
//定义返回的高程点集合
IPointCollection tEveColl;
tSurfaceop.ContoursAsPolylines((IGeoDataset)tRasterLayer.Raster, _PointCollect, out tGeometryCollection, out tEveColl);//tSurfaceop.Contour((IGeoDataset)tRasterLayer.Raster, 10, ref obj);
if (tGeometryCollection!=null && tGeometryCollection.GeometryCount > 0)
{
//把生成的等高线画到Map上
for (int i = 0; i < tGeometryCollection.GeometryCount; i++)
{
IGeometry tGeometry = tGeometryCollection.get_Geometry(i);
ILineElement tLineElement = new LineElementClass();
IElement tElement = (IElement)tLineElement;
tElement.Geometry = tGeometry;
this.axMapControl1.ActiveView.GraphicsContainer.AddElement(tElement, 0);
}
}
//刷新Map
this.axMapControl1.Refresh();
}
ISurfaceOp 接口生成等高线的更多相关文章
- arcgis中DEM如何生成等高线
地形图指比例尺大于1∶100万的着重表示地形的普通地图(根据经纬度进行分幅,常用有1:100万,1:50万,1比25万,1:15万,1:10万,1:5万等等).由于制图的区域范围比较小,因此能比较精确 ...
- Delphi 提示在Delphi的IDE中,按Ctrl+Shift+G键可以为一个接口生成一个新的GUID。
对于Object Pascal语言来说,最近一段时间最有意义的改进就是从Delphi3开始支持接口(interface),接口定义了能够与一个对象进行交互操作的一组过程和函数.对一个接口进行定义包含两 ...
- Java WebService接口生成和调用 图文详解>【转】【待调整】
webservice简介: Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实施的应用之间 ...
- Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring
Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring 非原创[只为记录],原博文地址:https://www.cnblogs.com/ ...
- (转)Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring
Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring Mybatis在与Spring集成的时候可以配置MapperFactoryBea ...
- mybatis如何根据mapper接口生成其实现类
SpringBoot集成mybatis mybatis的statement的解析与加载 mybatis如何根据mapper接口生成其实现类 mybatis的mapper返回map结果集 mybatis ...
- 如何自动在Eclipse里对指定类或接口生成要覆盖的方法?
我们经常遇到对对指定类或接口生成要覆盖的方法,但是我们不了解这些类和接口,完全手写不能保证完全正确,那么是否可以准确知道指定类或接口要被覆盖的方法,自动生成这些代码呢?是的,完全可以,按照下面步骤操作 ...
- Mybaits 源码解析 (十一)----- 设计模式精妙使用:静态代理和动态代理结合使用:@MapperScan将Mapper接口生成代理注入到Spring
上一篇文章我们讲了SqlSessionFactoryBean,通过这个FactoryBean创建SqlSessionFactory并注册进Spring容器,这篇文章我们就讲剩下的部分,通过Mapper ...
- Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring - 大新博客 - 推酷 - 360安全浏览器 7.1
Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring - 大新博客 时间 2014-02-11 21:08:00 博客园-所有随笔区 ...
随机推荐
- css盒子模型层级3D图
作为前端开发工程师,大家都应该知道盒子模型.下面用一张图来表达3D盒子模型的层级关系 大家可以看到background-color 在background-image的下一层.这个希望对大家有帮助
- 【opencv学习笔记】SetImageROI函数设置ROI区域的作用及用法
虽然先前知道ROI区域是感兴趣区域,但是真正看到调用了OpenCV的cvSetImageROI函数时,并不知道它的作用,所以还是单独写了一段代码对这个函数进行探究. OpenCVchm文档中对cv ...
- 初试微信小程序
2016年11月3日,微信小程序终于公测了,大家可以正式开发了.早在这之前,应公司要求,和同事就早早的试了一下微信小程序的开发,特此记录一下: 微信官方小程序文档:https://mp.weixin. ...
- C# 多线程同步和线程通信
多线程通信 1. 当线程之间有先后的依赖关系时,属于线程之间的通信问题.也就是后一个线程要等待别的一个或多个线程全部完成,才能开始下一步的工作.可以使用: WaitHandle Class WaitH ...
- border-image(转载)
本文转自:http://www.zhangxinxu.com/wordpress/2010/01/css3-border-image%E8%AF%A6%E8%A7%A3%E3%80%81%E5%BA% ...
- surge for mac出测试版本了
这两天一直在MAC上试图连接我的shadowsocks服务,使用shadowsocksX一直没能连接到服务器.服务器本身是没有问题的,因为我的thinkpad和iphone都可以正常使用.结果就试着使 ...
- nginx+tomcat集群配置(4)--rewrite规则和多应用根目录设定思路
前言: nginx中有一块很重要的概念, 就是rewrite规则. 它会对URL进行修改, 然后进行内部的重定向. rewrite授予了nginx更多的自由, 使得后级服务的接入更加地方便. 本文将简 ...
- Java问题总结
1.如何查看使用java的版本 cmd-->java -version 2.如何下载jdk,sdk Java.JDK(工具包)的安装_百度经验http://jingyan.baidu.com/a ...
- id 和 instancetype
静态数据类型 默认情况下所有的数据类型都是静态数据类型 静态数据类型的特点: 1 在编译时就知道变量的类型 2 知道变量中有哪些属性和方法 3 在编译的时候就可以访问这些属性和方法 4 并且如果是通过 ...
- MFC各种控件的常见操作(逐步添加中......)
由于经常切换系统或界面框架进行编程,难免有时会忘记之前的编程函数等等.所有在此自己做一个备份,以防止重新充电带来的痛苦! 1.CButton 1.1 在VC中编程实现按钮的启用(enable)和禁用( ...