URI
<geocodeService_uri>/findAddressCandidates[.<format>]
支持的方法
父资源
介绍
正向匹配,根据关键词查找地址,并返回地址、位置和匹配分数等信息。支持的搜索范围较 Suggest 资源更大。
请注意:转发由 10.2、10.9 版本 ArcGIS Server 发布的地址匹配服务仅支持部分请求参数,支持的情况在下表中“转发 10.2/10.9 ArcGIS Server 的服务是否支持”列标注。
支持的方法:
- GET:获取正向地址匹配结果。
- POST:按照给定参数进行正向地址匹配查询。
- HEAD:检查 findAddressCandidates 资源是否存在,或权限是否可以访问 findAddressCandidates 资源。
HTTP 请求方法
对如下 URI 执行 HTTP 请求,以 json 输出格式为例加以说明,其中,supermapiserver 是服务器名,{component}是服务组件名。
http://supermapiserver:8090/iserver/services/{component}/arcgisrest/geocode/GeocodeServer/findAddressCandidates.json
GET 请求
获取正向地址匹配结果。
请求参数
名称 | 类型 | 含义 | 转发10.2/10.9 ArcGIS Server的服务是否支持 |
---|---|---|---|
f | String | 【必填参数】响应格式,支持 json,pjson | √ |
address, address2, address3 | String[] | 多行地址参数,针对国外地址有多行/多组词汇的情况设计的参数结构,利用三个地址参数来表示街道地址的不同组成部分 每一个 address 是一个字符串,例如:address=Beetham Tower、address2=301 Deansgate 和 address3=Suite 4208 一般情况下,一个 address 代表地址中的一行 |
由geocodeService响应中返回的addressFields字段名称作为地址查询参数 |
neighborhood | String | 与地址关联的最小行政单位,较 city 更小(不是所有国家或地区都使用该参数) | |
city | String | 与地址关联的第二小行政单位,通常是城市或直辖市,较 subregion 或 region 更小 | |
subregion | String | 与地址关联的第二大行政单位,根据国家/地区的不同,可以表示县、州或省 | |
region | String | 与地址关联的最大行政区域,通常是州或省 | |
postal | String | 地址的标准邮政编码,通常为3到6位字母数字代码 | |
postalExt | String | 邮政编码扩展名 | |
countryCode | String | 用于限制返回结果的国家代码。可使用的值包括英文或国家/地区官方语言的国家/地区全名、双字符国家/地区代码或三字符国家/地区代码。 代码列表见:https://developers.arcgis.com/rest/geocode/geocode-coverage 请注意:如果 请求参数中同时包含 countryCode 和 sourceCountry ,并且值不同时,则优先使用 countryCode 的参数值。 |
|
sourceCountry | String[] | 用于限制返回结果的关联国家。可传入单个值或多个值,传入多个值时用逗号分隔。仅支持三字符国家/地区代码。 代码列表见:https://developers.arcgis.com/rest/geocode/geocode-coverage 请注意:如果 请求参数中同时包含 countryCode 和 sourceCountry ,并且值不同时,则优先使用 countryCode 的参数值。 |
|
singleLine | String | 单行地址参数,将多行/多组地址词汇在一个参数中传递。与上述多行地址参数不能同时使用 | 由geocodeService响应中返回的singleLineAddressField字段名称作为地址查询参数 |
category | String[] | 用于设置过滤的地点或地址类型,从而在指定地址字段中进行匹配而不再返回匹配其他字段的结果。可传入单个或多个类别值,用逗号分隔。可与 address 或 singleLine 参数组合使用,也可单独使用。 请注意:当通过工作空间发布 ArcGIS REST 地址匹配服务时,该参数不可通过在服务配置文件中指定 filterFields 参数控制 |
|
outFields | String[] | 响应体中 attributes 对象中返回的字段列表。可传入多个值,需用逗号分隔。 默认情况下,响应中会返回 address 、 location(匹配点的 x、y 坐标)、 score 、 extent 和 spatialReference 对象。如果请求中不包含该参数,或者包含该参数但未设置值,则响应中的 attributes 对象为空。 |
√ |
maxLocations | int | 返回匹配结果的最大数量。如果未指定,则返回所有匹配的候选项,直到服务允许的最大值 | |
outSR | String | 结果的坐标系。如果未指定,则坐标系与服务的坐标系相同 | √ |
searchExtent | ArcGISEnvelope | 一组边界框坐标,用于指定特定搜索区域,如果搜索区域的坐标系与服务的坐标系不同,则必需设置坐标系。例如: searchExtent= -109.55,25.76,-86.39,49.94 |
√ |
location | ArcGISPoint2D | 一个点坐标,用于根据候选项与该位置的接近程度来排序,如果搜索区域的坐标系与服务的坐标系不同,则必需设置坐标系。例如:location=-109.55,25.76 | |
magicKey | String | 用于优化检索速度。使用方法: 1、先对 suggest 资源进行请求,响应体中返回 {text} 和 {magicKey} 2、在本资源的请求参数中,{text} 作为 singleLine 的参数值、{magicKey} 作为 magicKey 的参数值 3、若在步骤1对 suggest 资源的请求中使用了 searchExtent 和 location 参数,对本资源请求时也需体现 |
|
matchOutOfRange | Boolean | 请求时设置的门牌号超出设置的街道定义的门牌号范围时,是否应返回该街道地址匹配项,默认为true | |
locationType | String | 用于指定响应体中 location 坐标使用的位置,可选值为rooftop(屋顶坐标)和 street(街道位置坐标)。默认为rooftop | |
langCode | String | 指定响应体中返回结果的语言,只可设置一种语言代码;若未设置或无匹配项,将按搜索请求中使用的语言返回 代码列表见:https://developers.arcgis.com/rest/geocode/geocode-coverage |
|
preferredLabelValues | String[] | 指定响应体中包含的地址按照何种信息返回。可传入单个或多个类别值,用逗号分隔。 参数值对应于两个组,每组只能提供一个值:City 和 Street 。City 的可选值包括:postalCity(邮政城市) , localCity(本地城市)和 matchedCity(匹配城市);Street 的可选值包括:primaryStreet(主要街道)和 matchedStreet(匹配街道)。 若 countryCode 或 sourceCountry 为美国时,地址信息将默认按照 postalCity 和 matchedStreet 返回 |
响应结构
对 findAddressCandidates 资源执行 GET 请求,返回的资源表述的结构如下:
字段 | 类型 | 说明 |
---|---|---|
spatialReference | ArcGISSpatialReference | 空间参考 |
candidates | AddressInfo | 匹配结果的地址信息,包括如下字段: 1、address:完整匹配地址; 2、location:匹配位置的点坐标,包括 x、y 和 spatialReference 属性; 3、score:匹配分数; 4、extent:匹配地址所在区域的最小几何范围,包括 xmin、ymin、xmax、ymax等坐标信息。坐标系由 spatialReference 参数决定; 5、attributes:匹配地址的属性信息,包含的字段如下表所示。 |
附表 attributes 对象参数结构(实际包含的参数以数据源本身为准)
字段 | 类型 | 说明 |
---|---|---|
Status | String | 指示匹配程度。 1、当该地址能够匹配且为得分最高者时,则为 M; 2、当该地址能够匹配但与一个或多个其他候选项的分数相同时,则为 T; 3、没有地址可匹配,则为 U。 |
Score | double | 该地址的匹配分数 |
Match_addr | String | 完整地址。格式基于地址所在国家/地区的地址标准 |
LongLabel | String | 完整地址。较 Match_addr 包含更多信息的地址书写方式 |
ShortLabel | String | Match_addr 的简化书写 |
Addr_type | String | 地理编码请求的地址类型。支持的类型因国家/地区而异。可选值包括 Subaddress、StreetAddress、PointAddress、POI、Locality 等19种。 详见:https://developers.arcgis.com/rest/geocode/service-output/ |
Type | String | 返回结果的特征类型。仅当 Addr_type 为 POI、Locality 时有值,其他为空 |
PlaceName | String | 地址候选项的正式名称,如 Paris |
Place_addr | String | 地点的完整街道地址信息,包括街道、城市和区域 |
Phone | String | 地址所在地点的电话,仅当 Addr_type 为 POI 时有值,其他为空 |
URL | String | 地址所在地点的主网站 URL,仅当 Addr_type 为 POI 时有值,其他为空 |
Rank | double | 此项结果相对于其他同名结果的优先级 |
AddBldg | String | 地址所在地点的建筑物名称 |
AddNum | String | 地址中含有的数字值,仅当 Addr_type 为 StreetAddress、PointAddress 时有值,其他为空 例如:在 380 New York Street 中,该值为380 |
AddNumFrom | int | 表示街道地址范围的开始编号。仅当 Addr_type 为 StreetAddress 时有值,其他为空 请注意:该值与矢量化方向相关,不一定是范围内的最小数字 |
AddNumTo | int | 表示街道地址范围的结束编号。仅当 Addr_type 为 StreetAddress 时有值,其他为空 请注意:该值与矢量化方向相关,不一定是范围内的最大数字 |
AddRange | String | 地址所在街段的完整门牌号范围,格式为 AddNumFrom-AddNumTo |
Side | String | 地址所在的街道相对于矢量化方向的一侧,可选值为 R 或 L。大多数情况该字段为空 |
StPreDir | String | 地址中的街道方向,一般出现在主要街道名称之前。 例如:在 North Main Street 中,该值为 North |
StPreType | String | 地址中的街道类型。 例如:在 Avenida Central 中,该值为 Avenida |
StName | String | 地址中街道的主名称。 例如:在 380 New York St 中,该值为 New York |
StType | String | 地址中街道的定义方式。 例如:在 380 New York St 中,该值为 St |
StDir | String | 地址中的街道方向,一般出现在主要街道名称之后。 例如:在 Main Street North 中,该值为 North |
BldgType | String | 地址中建筑的类型,例如 building、hangar 和 tower |
BldgName | String | 地址中建筑的名称或编号。 例如:在 building A 中,该值为 A |
LevelType | String | 地址中楼层的类型,例如 floor、level、department 和 wing |
LevelName | String | 地址中楼层的名称或编号。 例如:在 level 3 中,该值为 3 |
UnitType | String | 地址中单元的类型,例如 unit、apartment、flat、office 和 suite |
UnitName | String | 地址中单元的名称或编号。 例如:在 apartment 2B 中,该值为 2B |
SubAddr | String | Subaddress 中的完整子地址信息,包括 type 和 name。仅当 Addr_type 为 Subaddress 时有值,其他为空,例如 Apt 4B。 |
StAddr | String | 地址中的街道地址,不含城市和区域等信息 |
Block | String | 地址中的行政区划 |
Sector | String | 地址中的部级行政区域名称,是 block 的集合 |
Nbrhd | String | 地址中的社区级行政区域名称,是 city 的子集 |
District | String | 地址中的区级行政区域名称 |
City | String | 地址中的市级行政区域名称 |
MetroArea | String | 地址中的多市级行政区域名称,指由大城市和周围的小城市组成的城市区域 |
Subregion | String | 地址中的子区域级行政区域名称,是 Region 的子集 |
Region | String | 地址中的地区级行政区域的名称,是一个国家或地区的子集 |
RegionAbbr | String | 区域的缩写名称。 例如:对于 California,该值为 CA |
Territory | String | 地址中的地区级行政区域的名称,是 country 的子集 |
Zone | String | 地址中的地区名称,与国家同级 |
Postal | String | 地址中的邮政编码 |
PostalExt | String | 地址中的邮政编码分号 例如:对于 92373-8110,该值为 8110 |
Country | String | 地址中国家的 3 字符代码 国家与代码列表详见:https://doc.arcgis.com/zh-cn/arcgis-online/reference/geocode-coverage |
CountryName | String | 地址中国家的完整名称 |
LangCode | String | 地址使用的语言,由 3 字符组成的语言代码 语言与代码列表详见:https://www.loc.gov/languages/language_code.html |
Distance | double | 地址所在地点到指定位置的距离。仅当请求参数种包含 location 字段时会进行计算,否则返回值为0 |
X | double | 地址的 X 坐标(4326坐标系下) |
Y | double | 地址的 Y 坐标(4326坐标系下) |
DisplayX | double | 地址的显示 X 坐标(4326坐标系下)。通常情况下与 X 参数值相同,对于 Subaddress、PointAddress,可能存在不同 |
DisplayY | double | 地址的显示 Y 坐标(4326坐标系下)。通常情况下与 Y 参数值相同,对于 Subaddress、PointAddress,可能存在不同 |
Xmin、Ymin、Xmax、Ymax | double | 4326坐标系下的坐标,用于表示地址所在区域的最小几何范围 |
ExInfo | String | 若查询的地址字符串中存在无法与任何地址匹配的字符值,在该字段中体现 |
StrucType | String | 地址所在地点的类型,仅当国家为美国且 Addr_type 为Subaddress、PointAddress 时返回该字段。可选值为 Residential 和 Commercial |
StrucDet | String | 地址所在地点的细分类型,由 StrucType 决定,仅当国家为美国且 Addr_type 为 Subaddress、PointAddress 时返回该字段 可选值详见:https://developers.arcgis.com/rest/geocode/service-output/ |
响应示例
对 findAddressCandidates 资源:http://supermapiserver:8090/iserver/services/addressmatch-arcgisGeocode/arcgisrest/geocode/GeocodeServer/findAddressCandidates?Address=广东省&Address2=&Address3=&Neighborhood=&City=&Subregion=&Region=&Postal=&PostalExt=&CountryCode=&SingleLine=&outFields=&maxLocations=&matchOutOfRange=true&langCode=&locationType=&sourceCountry=&category=&location=&searchExtent=&outSR=&magicKey=&preferredLabelValues=&f=pjson 执行 GET 请求,查找地址为广东省的地点位置,返回 json 格式的资源表述如下:
{
"candidates": [{
"extent": null,
"score": 100,
"address": "广东省",
"attributes": {},
"location": {
"x": 3.982640983587552E7,
"y": 2597586.8380455966,
"spatialReference": null
}
}],
"spatialReference": null
}
POST 请求
跟 GET 请求结构类似。
HEAD 请求
返回跟 GET 请求一样的 HTTP 响应头,但是没有响应实体。可以在不必传输整个响应内容的情况下,获取包含在响应消息头中的元数据信息。元数据信息包括媒体类型,字符编码,压缩编码,实体内容长度等。
HEAD 请求可以用来判断 findAddressCandidates 资源是否存在,或者客户端是否有权限访问 findAddressCandidates 资源。通过对加.<format>的 URI 执行 HEAD 请求,还可以快速判断 findAddressCandidates 资源是否支持<format>格式的表述。
请参见
- geocodeService、geocodeAddresses、reverseGeocode、suggest
- 客户端构建 REST 请求
- 状态码列表及说明
- SuperMap iServer REST API 表述格式介绍