ArcGIS Feature Layer超出限制

时间:2018-11-22 10:27:25

标签: arcgis

我是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();

我认为我缺少一些微小但至关重要的东西。 如果您需要其他任何信息来回答这个问题,请告诉我。

谢谢!

1 个答案:

答案 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