我是ArcGIS的新手。 我一直在使用它在ArcGIS服务器上发布Roads Layer服务。 每当我将小区域的要素类作为服务上传时,一切似乎都正常工作。道路出现在我的Web应用程序上,每个人都很高兴。 现在,该服务应支持整个世界。因此,对于初学者来说,我尝试上传加利福尼亚的要素类作为服务。 问题是道路是随机装载的,而不是我当前所看到的。这样,我超出了服务器返回的功能限制,并且有很多没有道路的区域。
经过大量的研究,我找到了如何查询要加载的特定区域。 Esri的文档在这方面不是很有帮助。不幸的是,除了请求的区域之外,道路仍然随机加载。如何仅加载查询的区域? 我正在使用通过ArcMap 10.6上传到ArcGIS Server的服务。 这是Javascript中的相关代码:
this.layer = new FeatureLayer({
url: this.featureServiceUrl,
renderer: renderer,
outFields: ["*"],
elevationInfo: {
mode: "on-the-ground"
},
refreshInterval: 0.1
});
创建距离1000的查询:
this.props.map.add(this.layer);
// Get a query object for the layer's current configuration
const queryParams = this.layer.createQuery();
queryParams.geometryType = "point";
// set a geometry for filtering features by a region of interest
queryParams.geometry = new Point({
x: -117.19477,
y: 32.81452,
z: 0
});
queryParams.distance = 1000;
let results = await this.layer.queryFeatures(queryParams);
await this.layer.applyEdits({
updateFeatures: results.features
});
this.layer.refresh();
我认为我缺少一些微小但至关重要的东西。 如果您需要其他任何信息来回答这个问题,请告诉我。
谢谢!
答案 0 :(得分:0)
我找到了解决方案: 在ArcGIS Java v4.9中,在创建FeatureLayer对象时,应添加以下属性:
definitionExpression: [query object]
例如:
this.layer = new FeatureLayer({
url: this.featureServiceUrl,
renderer: renderer,
outFields: ["*"],
elevationInfo: {
mode: "on-the-ground"
},
definitionExpression: this.props.features_query
});
这里是对API的引用:ArcGIS API Documentation。