C#之ArcGIS二次开发

C#之ArcGIS二次开发根据图层名称获取图层publicIFeatureLayergetLayer(AxMapControlaxMapControl,stringlayerName){if(axMapControl.LayerCount>0){for(inti=0;i

大家好,又见面了,我是你们的朋友全栈君。

根据图层名称获取图层

public IFeatureLayer getLayer(AxMapControl axMapControl, string layerName)
{
    if (axMapControl.LayerCount > 0)
    {
        for (int i = 0; i < axMapControl.LayerCount; i++)
        {
            ILayer pLayer = axMapControl.get_Layer(i);
            if (pLayer.Name == layerName)
                return pLayer as FeatureLayer;
        }
    }
    return null;
}

按条件查询图层要素,并闪烁

public void searchFeatures(AxMapControl mapControl,string sqlfilter,IFeatureLayer pFeatureLayer)
{
    IFeatureLayer pFeatLyr = pFeatureLayer;
    IQueryFilter pFilter = new QueryFilterClass();
    pFilter.WhereClause = sqlfilter;
    IFeatureCursor pFeatCursor = pFeatLyr.Search(pFilter,true);
    IFeature pFeat = pFeatCursor.NextFeature();
    while (pFeat != null)
    {
        if (pFeat != null)
        {
            ISimpleFillSymbol pFillsyl = new SimpleFillSymbolClass();
            RgbColor pRgbColor=new RgbColor();
            pRgbColor.Red=255;
            pRgbColor.Green=0;
            pRgbColor.Blue=0;
            pFillsyl.Color = pRgbColor;
            object oFillsyl = pFillsyl;
            IPolygon pPolygon = pFeat.Shape as IPolygon;
            mapControl.FlashShape(pPolygon, 15, 20, pFillsyl);
            mapControl.DrawShape(pPolygon, ref oFillsyl);
        }
        pFeat = pFeatCursor.NextFeature();
    }
}

sqlfilter为查询条件,如查询layer图层中,属性字段ID<10的要素:searchFeatures(axMapControl1, “ID < 10”, layer);

建立缓冲区,并添加到图层

public void SetBuffer(AxMapControl m_map, string LayerName, double bufferDistance,string OutputPath)
{
    try
    {
        IFeatureLayer layer = getLayer(m_map,LayerName);
        if (layer == null)
        {
            LogHelper.Debug("图层不存在");  #这里是自己写的日志记录方法
            return;
        }
        Geoprocessor gp = new Geoprocessor();
        gp.OverwriteOutput = true;
     
        ESRI.ArcGIS.AnalysisTools.Buffer buffer = new ESRI.ArcGIS.AnalysisTools.Buffer(layer, OutputPath, bufferDistance.ToString() + " Meters");
        IGeoProcessorResult results = (IGeoProcessorResult)gp.Execute(buffer, null);
        if (results.Status != esriJobStatus.esriJobSucceeded)
        {
            LogHelper.Debug("为图层" + layer.Name + "建立缓冲区失败\r\n");
        }

        int k = OutputPath.LastIndexOf('\\');
        string pOutFeatclsName = OutputPath.Substring((k + 1)).Trim();
        string strFolder = OutputPath.Substring(0, k);
        m_map.AddShapeFile(strFolder, pOutFeatclsName);   #添加到图层
    }
    catch (Exception ex)
    {
        LogHelper.Error(ex.Message);
    }
}


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148699.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 为 PHPer 准备的 Go 入门知识

    为 PHPer 准备的 Go 入门知识

    2022年2月17日
  • ipynb可以用pycharm_pycharm运行jupyter

    ipynb可以用pycharm_pycharm运行jupyter背景我的Pycharm下面有很多Project,每个Project一个Anaconda环境,昨天新开了一个Project叫CLRS_Code,Anaconda环境名也叫CLRS_Code然后我之前没有在Pycharm里面用过Jupyter,突然想试试这个功能,然后就新建一个.ipynb文件,Pycharm提示我没有装JupyterPackages,然后我就在Pycharm里面装了,装完之后,搜索…

    2022年8月27日
  • 牛客:数据库实战—2—查找各个部门当前(to_date=’9999-01-01′)领导当前薪水详情以及其对应部门编号dept_no「建议收藏」

    牛客:数据库实战—2—查找各个部门当前(to_date=’9999-01-01′)领导当前薪水详情以及其对应部门编号dept_no「建议收藏」CREATE TABLE `dept_manager` (`dept_no` char(4) NOT NULL,`emp_no` int(11) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`dept_no`));CREATE TABLE `salaries` (`…

    2022年6月13日
  • ssm管理系统课题_p2实验室

    ssm管理系统课题_p2实验室开发目的方便高效地实验室设备统一管理,除了实现基本的增删改查,还提供借用、归还、购买和问题反馈功能,可实现对实验室设备的基本业务的处理本项目由本人负责开发完成,项目能保证正常运行,当然其中不免也会有缺漏或不完善的地方解决方案1.后端Java框架使用spring+springmvc+mybatisspring功能是实现参数参数注入,请求分发处理,对数据库操作进行事务控制,其中mybatis使用注解查询,整体上大部分使用xml配置,少部分使用注解2.前端使用HTML+javascript+css+j

    2022年10月13日
  • 2020湖南省ACM_acm个人赛

    2020湖南省ACM_acm个人赛记2020年(第16届)湖南ACM省赛写在前面我很喜欢《龙族》里那个叫路明非的衰小孩。虽然我也不知道为什么要说这个,逃这个世界有多大,取决于你认识的人,你每认识一个人,世界对你来说就会变大一些——路明非热身赛今年蓝桥杯和热身赛冲突了,搞完蓝桥杯都1点了,急忙赶去长理签到一下~哈哈外市的参加完蓝桥杯就不太方便过来,就现得热身赛异常冷清了,没多少队伍。打开题目一看,好家伙。是去年省赛的原题。cjm:我不想写了我:??(原来大佬都是这样子的)lb:??(大佬啊)我看到签到题A就想到上

    2022年10月8日
  • 剑指offer——二进制中1的个数(解释n & 0xFFFFFFFF)[通俗易懂]

    剑指offer——二进制中1的个数(解释n & 0xFFFFFFFF)[通俗易懂]题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解答如下:环境:python2.7.3正数的原码反码补码都一样负数的补码是其对应正数的反码加1这里需要弄清楚为什么python中负数需要和0xFFFFFFFF做与操作?在计算机中,所有的数字都是使用补码存储起来的。由于Python没有位数这个概念,所以得到二进制表示需要多一点操作,即将位数限制在32位,…

    2022年5月16日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号