您是否想定义一个定义查询来过滤一个或多个特性(基于属性值)?
你可以Set View定义>定义特征>选择“IS NOT”或类似的关系方法
或者,你也可以选择滤镜工具
但是,如果您想通过绘制区段来反转Set Definition,则它目前可能不可用。
如果你查看视图层的属性,感兴趣的区域定义是这样的:
..."viewLayerDefinition": {"table": {"name": "1_Mile_Hex_Bins_0", "sourceServiceName": "1_Mile_Hex_Bins", "sourceLayerId": 0, "sourceId": 168, "filter": {"field": "Shape", "operator": "esriSpatialRelIntersects", "value": {"geometryType": "esriGeometryEnvelope", "geometry": {"xmin": -9852765.119535469, "ymin": 5091944.190591968, "xmax": -9833522.900104206, "ymax": 5110027.615063814, "spatialReference": {"wkid": 102100, "latestWkid": 3857}}}}, "sourceLayerFields": [], "materialized":False}}},…
注意操作符.默认情况下,为相交.我希望能简单地把它改成不相交的,但REST API文档没有将其列为选项。
要注意的第二件事是价值.这里,它只是一个信封,但它也可以是一个多边形。即使一个多边形本质上是一个全局“甜甜圈”,“甜甜圈洞”是我们不想要的区域。
我认为这就是我们想要的方法。让我们试一试。我有一层巫术箱覆盖了我的县。我有一个视图层定义如上所示,是在中心的箱子的子集。
使用Python API,我们将访问FeatureLayerManager的update_definition ()方法,如下所示:
View_layer = gis.content.get('item-id')。层[0]view_layer.manager。update_definition({"viewLayerDefinition":{"filter":{"operator":"esriSpatialRelIntersects", "value":{"geometryType":"esriGeometryPolygon", "geometry":{"rings":[#略过],"spatialReference":{"wkid":102100,"latestWkid":3857}}}}}})
对于省略的部分,我使用了包含整个数据集的甜甜圈特征的多边形JSON,“甜甜圈洞”是我希望排除的部分。我的是根据“周边县”创建的,所以比你的要复杂得多。
在这之后回到我的视图层,我现在看到以下功能,以及AOI:
完美!
为了进一步细化这一点,你还可以将空间关系更改为“包含”,只抓取那些完全包含在甜甜圈多边形中的特征。
这需要做很多工作,但简而言之,这绝对是可能的。