账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    ArcGIS MultipleRingBuffer的参数使用问题
    103
    0
    private IFeatureLayer featureLayer;
    ...
    ILayer layer = rasterHelper.getLayerFromName(comboBoxLayers.SelectedItem.ToString());
    featureLayer = layer as IFeatureLayer;
    ...
    Geoprocessor gp = new Geoprocessor();
    gp.OverwriteOutput = true;
    ESRI.ArcGIS.AnalysisTools.MultipleRingBuffer multipleRingBuffer = new ESRI.ArcGIS.AnalysisTools.MultipleRingBuffer();
    multipleRingBuffer.Input_Features = featureLayer;
    multipleRingBuffer.Distances = distances;
    gp.Execute(multipleRingBuffer, null);

    如上图代码,首先定义了一个IFeatureLayer类型变量,然后在别的地方进行赋值了。
    最后调用gp工具调用,但是结果会失败,经过研究分析有两个问题。
    1.Distances参数问题,刚开始使用了distances = "1,2,3",失败。最后确认该参数格式应该为distances = "1;2;3"
    2.Input_Features参数问题,改参数使用绝对路径的shapefile文件就能完成执行(如:C:temp.shp),但是使用IFeatureLayer类型则会出错。为什么?有没有不使用绝对路径的方法呢?
    注:Input_Features对象类型为object

    望有知道的大神为我解惑!感激不尽!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 此生不换的執著 普通会员 1楼

      在ArcGIS中,MultipleRingBuffer是一种用于存储多边形区域的方法。但是,它并不支持所有的操作。例如,它不支持添加或删除多边形。

      如果你想在多个RingBuffer中存储多边形,你需要确保它们是相邻的。这意味着,每个RingBuffer都应该包含相同的多边形区域,或者是那些相邻的多边形区域的集合。

      如果你使用的是Python的ArcGIS API,你可以在获取或创建RingBuffer时指定它们的边界。例如:

      ```python from arcgis.core import FeatureLayer

      获取第一个RingBuffer

      first_ring_buffer = FeatureLayer('path_to_your_ring_buffer')

      创建第二个RingBuffer

      second_ring_buffer = FeatureLayer('path_to_your_ring_buffer')

      将第一个RingBuffer添加到第二个RingBuffer

      second_ring_buffer.add_child(first_ring_buffer) ```

      在这个例子中,我们首先获取第一个RingBuffer,然后创建第二个RingBuffer,并将第一个RingBuffer添加到第二个RingBuffer中。

      如果你使用的是Java的Esri REST API,你可以在创建或获取RingBuffer时指定它们的边界。例如:

      ```java EsriPoint polygon1 = new EsriPoint(new EsriDecimalField("my_field")); EsriPoint polygon2 = new EsriPoint(new EsriDecimalField("my_field")); EsriPoint polygon3 = new EsriPoint(new EsriDecimalField("my_field"));

      FeatureLayer myLayer = new FeatureLayer("path_to_your_layer"); myLayer.setPointClass(new EsriPointClass()); myLayer.addFeatures(polygon1, polygon2, polygon3);

      // 获取第一个RingBuffer FeatureLayer firstRingBuffer = myLayer.getLayers().get(0); ```

      在这个例子中,我们首先创建了三个EsriPoint对象,然后使用它们创建了一个新的FeatureLayer,并将这些点添加到这个Layer中。然后,我们获取了第一个RingBuffer,并将它添加到我们的Layer中。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部