arcgis query接口使用

arcgis服务query接口简单使用

1.url

对于一个arcgis服务,其query接口请求的url为:

url = arcgis服务地址(…MapServer) + 图层id + “/query”

2.参数

在这里插入图片描述
上图为arcgis服务query接口的查询面板,就我使用过的进行介绍:

where:条件查询参数,输入sql语句,对图层数据按条件进行筛选,简单示例:

​ ”1=1“ :返回查询图层里所有数据;

​ ”FID = ’1‘ “:返回FID = 1的所有数据;

​ ”FID LIKE ’%1%‘ “ 返回所有FID的值中带有1的数据;

​ 更多条件查询语句可参考SQL语法。

geometry:坐标空间,传入与服务空间参考相同的坐标数据。这里Geometry要传ring、paths、Point对象。

geometryType:传geometry的esri类型,如: esriGeometryPolygon、esriGeometryPolyline、esriGeometryPoint等。

spatialRel:空间关系,输入空间坐标与查询图层的空间关系,相交、包含、叠置等。我这里只用到了esriSpatialRelIntersects这个参数,表示广义的相交。

outFields:返回的属性字段, 传入“*”可返回所有属性字段。

returnGeometry:是否返回Geometry。true返回;false不返回。

returnIdsOnly:是否仅返回id,一般设为false。

returnCountOnly:是否仅返回count,一般设为false。

f:返回数据的格式,默认的返回类型是html,其值为“pjson”时,返回json格式的数据。

3.post请求方法

    /** arcgis post 查询
      * @param {*} params 条件,必选
      * @param {*} successful 成功回调方法,必选
      * @param {*} unsuccessful 失败回调方法,可选
      */
        arcgisQuery(params, successful, unsuccessful) {
            axios
                .post(
                    params.url + '/query',
                    {
                        where: params.where ? params.where : '',
                        geometry: params.geometry ? params.geometry : '',
                        geometryType: params.geometryType ? params.geometryType : '',
                        spatialRel: params.spatialRel ? params.spatialRel : '',
                        returnGeometry: true,
                        // returnIdsOnly: false,
                        // returnCountOnly: false,
                        // returnDistinctValues: false,
                        // returnZ: false,
                        // returnM: false,
                        f: "pjson",
                        outFields: params.outFields ? params.outFields : '*'
                    },
                    {
                        headers: {
                            "Content-Type": "multipart/form-data",
                        },
                    }
                )
                .then((response) => {
                    if (typeof response !== 'object') {
                        response = JSON.parse(response);
                    }
                    if (response.data !== undefined && response.status == 200) {
                        successful(response);
                    } else {
                       alert('请求失败,请联系管理员!');
                        return;
                    }

                }).catch((error) => {
                  unsuccessful(error)
                })
        }

4.一个tips

在这里插入图片描述

如图,运用arcgis自带的查询页面,发送query请求,查看返回结果;可验证各参数的功能和返回结果的正确性,帮助定位自己开发过程的错误。

### 使用Python在ArcGIS中进行地理空间数据分析 #### 安装必要的库和环境配置 为了能够在ArcGIS环境中利用Python进行开发,安装并配置好相应的库至关重要。这通常涉及到设置Anaconda环境以及安装`arcgis`库和其他依赖项[^1]。 ```bash conda create -n arcgis python=3.8 conda activate arcgis pip install arcgis ``` #### 数据加载与预处理 借助于`arcgis`库中的`ArcGISLoader`模块,能够轻松实现不同格式的空间数据文件读取,并将其转换成适合进一步分析的数据结构形式。对于更复杂的数据源,则可以通过编写自定义的Python脚本来完成特定需求下的数据获取工作。 ```python from arcgis.gis import GIS from arcgis.features import FeatureLayer # 创建连接到ArcGIS Online或Portal实例的对象 gis = GIS("https://www.arcgis.com", "username", "password") # 加载在线图层作为FeatureLayer对象 layer_url = 'http://services.arcgis.com/.../arcgis/rest/services/Demographics/FeatureServer' feature_layer = FeatureLayer(layer_url) # 查询要素类中的所有记录 data_items = feature_layer.query().features print(f"Total number of features loaded: {len(data_items)}") ``` #### 执行空间查询与统计计算 基于已有的矢量数据集执行各种类型的拓扑关系判断(如相交、包含)、距离测量或是属性字段间的聚合运算等功能均可以在Python环境下调用对应的API接口来达成目的。此外,还可以运用NumPy/Pandas等第三方科学计算包辅助完成更加复杂的逻辑操作[^2]。 ```python import pandas as pd # 将查询结果转化为Pandas DataFrame以便后续处理 df = pd.DataFrame.from_records([feat.attributes for feat in data_items]) # 计算人口密度列 area_field_name = 'SHAPE_Area' # 假设面积存储在此字段下 population_field_name = 'Population' if area_field_name in df.columns and population_field_name in df.columns: df['Density'] = df[population_field_name] / df[area_field_name] # 输出前几条记录查看新添加的人口密度信息 print(df.head()) ``` #### 结果可视化展示 最后一步就是将经过加工后的成果直观地呈现出来。无论是静态的地图截图还是动态交互式的Web应用界面都可以依靠ArcGIS平台所提供的绘图组件快速构建而成。同时支持导出多种常见图形文件格式供报告撰写时选用。 ```python m = gis.map('Los Angeles, CA') m.add_layer(feature_layer) m.draw() ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值