ESRI LEaflet - 将 ESRI GeoJSON/多部分多边形添加到 REST 服务

问题描述

我目前允许用户使用绘图图层绘制 ESRI-Leaflet 地图,向该图层添加一些附加属性,然后将结果提交给要素服务。

这对于单个多边形非常有用。但是,该方法不适用于 FeatureCollection 中的多部分(多面)多边形或混合要素类型。我特别希望提交多部分多边形而不是迭代可用功能。有一些后续的 GIS 功能依赖于它们是多部分的。

下面是我目前处理事情的样本集。然后,我对多部分的想法有一个概念。

我的问题是-
当使用 geojsonToArcGIS 时,我可以使用带有 addFeature 的结果将多部分多边形添加到要素服务中吗?

我不仅不知道这是否是一种有效的方法,而且我不确定是否有更好的方法解决这个问题。关于使用 ESRI Leaflet 添加多部分特征集合的在线文档或示例并不多。

目前正在使用:


 var feature = {
            type: 'Feature',geometry: Geometry,properties: {
                LGA: String(lga),Locality: String(locality),Region: String(region),};

service.addFeature(feature,function (error,response) {
            if (error) {
                console.log('error creating feature' + error.message);
            } else {
                console.log('Successfully created feature with id ' + response.objectId);
            }
        });

我想知道是否可以按照以下方式做更多的事情,而不是使用上述内容

//We start with a drawing layer,ingested as drawngeo. Lets assume it has 3 polygons (or lines) at this point. 
if (eventtype == "create") {
            var drawngeo = drawnItems.toGeoJSON(); //This makes the JSON accessible
            drawngeo.features[0].properties.TestKey = "Test"; //Add a custom property,for example.
            var drawnesrijson = L.esri.Util.geojsonToArcGIS(drawngeo,"OBJECTID"); //Make it ESRI-JSON
}

service.addFeature(drawnesrijson,response) { //We have used the ESRI GeoJSON instead
            if (error) {
                console.log('error creating feature' + error.message);
            } else {
                console.log('Successfully created feature with id ' + response.objectId);
            }
        });

如果这有助于人们将来找到它,这里有一些额外的关键字:ArcGIS Online、AGOL、ESRI、ArcGIS Portal。

解决方法

使用 EsriJson 和 ArcGIS Rest APIGeoJson 支持多部分多边形。您正在使用的库看起来是相同的 as this one from Esri 并且应该能够转换为多部分,但如果不是,那么您可能需要像在第一个中那样自己构造对象示例。

以下是使用几何作为多部分多边形构造的示例 EsriJson 对象:

{
  "attributes" : {
    "DESCRIPTION" : "Test case multipolygon"
  },"geometry" : 
  {
    "rings" : 
    [
      [
        [155000,463000],[156000,464000],[155000,463000]
      ],[
        [157000,[158000,[157000,463000]
      ]
    ]
  }
}
‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

对 drawesrijson() 的输出执行 console.log() 并检查 Json 数组是否与上述格式匹配可能会有所帮助。如果不是,那么您将需要检查您的输入是否有效(没有甜甜圈或重叠几何图形)或构造几何图形以匹配多部分的 EsriJson 格式,然后像上面的示例 1 一样将其附加到您的 Json 对象。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...