ArcGISEngine实现图层输出kml

原创 2013年12月06日 09:56:19

ArcGIS的转换工具(ConversionTools)提供了将图层输出到kml的接口LayerToKML

这个方法被封装在ESRI.ArcGIS.ConversionTools

    LayerToKML接口的输入参数layer接收两种类型的参数:本地磁盘的图层文件(*.lyr)、内存中的图层。

n  将本地磁盘图层文件(*.lyr)输出kml

// LayerToKML接口输出kml

Geoprocessor pGeoProcessor = newGeoprocessor();

   ESRI.ArcGIS.ConversionTools.LayerToKML pLayerToKML = newESRI.ArcGIS.ConversionTools.LayerToKML();

   pLayerToKML.layer = @"D:\slayer.lyr";

   pLayerToKML.out_kmz_file = "C:\\pkm.kmz";

   pLayerToKML.layer_output_scale = 10000.0;

   pGeoProcessor.OverwriteOutput = true;

   IGeoProcessorResult resultGeo =

           (IGeoProcessorResult)pGeoProcessor.Execute(pLayerToKML, null);

   if(resultGeo.Status == esriJobStatus.esriJobSucceeded)

                    MessageBox.Show("执行成功!", "输出KML", MessageBoxButtons.OK, MessageBoxIcon.Information);

   else

                    MessageBox.Show("执行Error","输出KML",MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

n  将图层选择集输出kml

IFeatureLayer pFeatureLayer = axMapControl1.get_Layer(0) asIFeatureLayer;

//设置空间查询范围条件

ISpatialFilter pQueryFilter = newSpatialFilterClass();

pQueryFilter.Geometry =pPoly;

pQueryFilter.SpatialRel= esriSpatialRelEnum.esriSpatialRelIntersects;

//生成图层在此范围内的选择

IFeatureSelection pFeatureSele = pFeatureLayer asIFeatureSelection;

pFeatureSele.SelectFeatures(pQueryFilter,esriSelectionResultEnum.esriSelectionResultNew,false);

//IFeatureLayerDefinition接口在当前将图层选择集基础上创建新的图层

IFeatureLayerDefinition2 pFLayerDef = pFeatureLayer asIFeatureLayerDefinition2;

IFeatureLayer pNewLyr = pFLayerDef.CreateSelectionLayer("uuu", true, null, null);

// LayerToKML接口输出kml

ESRI.ArcGIS.Geoprocessor.Geoprocessor pGeoProcessor = new ESRI.ArcGIS.Geoprocessor.Geoprocessor();

    ESRI.ArcGIS.ConversionTools.LayerToKML pLayerToKML = new ESRI.ArcGIS.ConversionTools.LayerToKML();

     pLayerToKML.layer= pNewLyr;

    pLayerToKML.out_kmz_file ="C:\\NewKML.kmz" ;

    pLayerToKML.layer_output_scale = 10000.0;

    pGeoProcessor.OverwriteOutput = true;

     IGeoProcessorResult resultGeo =

                    (IGeoProcessorResult)pGeoProcessor.Execute(pLayerToKML,null);

     if (resultGeo.Status == esriJobStatus.esriJobSucceeded)

                    MessageBox.Show("执行成功!", "输出KML",MessageBoxButtons.OK, MessageBoxIcon.Information);

     else

                    MessageBox.Show("执行Error","输出KML", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数。 1.   最基本的算法是,从小到大遍历: for (i = 2 to A -1)          if (i * B > A)...

利用K-means聚类算法根据经纬度坐标对中国省市进行聚类

K-means聚类算法是一种非层次聚类算法,在最小误差的基础上将数据划分了特定的类,类间利用距离作为相似度指标,两个向量之间的距离越小,其相似度就越高。程序读取全国省市经纬度坐标,然后根据经纬度坐标进...

source insight的查找功能

source insight是一款很好的c语言的程序编辑器,方便对project管理,方便程序的阅读和编辑。查找功能使用十分频繁,选项较多,与其它软件的查找功能也类似,下面对英文版的查找功能,做简单说...
  • kobesdu
  • kobesdu
  • 2014年07月24日 14:53
  • 35883

第十一章全部上机代码

上机练习1 --查询每个年级的总学时数,并按照升序排列。 SELECT SUM(ClassHour) AS 总学时,GradeId AS 年级 FROM Subject GROUP BY Grade...

python调用java编写的Webservice

首先我使用的是java自带的对webservice的支持包来编写的服务端和发布程序,代码如下。 webservice的接口代码: package com.xxx.test.ws; import ja...
  • dmcpxy
  • dmcpxy
  • 2014年03月10日 16:06
  • 4697

linux/ubuntu 端口开放

在ubuntu下面开放端口好像主要有两种方法,一种是ubuntu自带的防火墙,一种是iptables,这里我们主要使用iptables。本文的系统版本为ubuntu14.04和ubuntu16.04 ...

java 判断对象是否是某个类的类型两种方法

一、 instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。  用法: ...

putty连接中断的恢复

第一次连接时使用screen命令对session进行记录: 1、
  • csdidi
  • csdidi
  • 2014年11月04日 19:58
  • 1349

用UGUI做一个鼠标悬停事件

在游戏中经常会有物品属性的查看,这些实现往往都是当鼠标移动到该物体上时弹出一个属性框,简单的做法是做一个UI框,将它的Active设置成false,就是不让它显示,只有当鼠标移动到这个物体上时,才会让...
  • KiTok
  • KiTok
  • 2016年11月04日 10:28
  • 5325

Radon变换理论介绍与matlab实现--经验交流

本人最近在研究Radon变换,在查阅了各种资料之后在此写下个人的理解,希望与各位牛牛进行交流共同进步,也使得理解更加深刻些。 Radon变换的本质是将原来的函数做了一个空间转换,即,将原来的XY平...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ArcGISEngine实现图层输出kml
举报原因:
原因补充:

(最多只允许输入30个字)