作者 小舜
iServer迎来9D版本重大更新,其中一个新功能就是地址匹配服务就是我们熟悉的正反地理编码功能,今天我们就来简单了解下这个新功能。
###发布地址匹配服务
想要使用地理编码的功能首先我们需要发布一个地址匹配服务,我们以iServer产品包中的示范数据(iServer所在目录/sample/data/AddressMatch/BeijingAddress.smwu)为例,登入iServer服务管理页面,选择快速发布服务,发布工作空间,勾选发布地址匹配服务进入详细配置页面。如下图所示:
其中*号参数为必填
数据字典:地址字典文件路径,后缀为“.dct”。地址字典文件中规定了中文分词规则,分词是把中文的汉字序列切分成有意义的词,例如:我是一个学生,分词后的结果:我/是/一个/学生。地址字典就是这些有意义的词的集合。SuperMapiServer 内置地址字典,您也可以通过SuperMap iobject Java为您的数据定制地址字典。iServer的默认字典路径为iServer所在目录/webapps/WEB-INF/config/addressMatchDictionary.dct
数据源,数据集:分别设置要做编码的数据源和数据集。
查询字段:设置编码可用来参与地址匹配的字段,最终返回的地点名称与设置的字段顺序相反,可设置多个。
查询半径:用于设置查询范围,设置后用户将获得指定半径内的结果。使用反向地址匹配时有效。单位为米。
索引目录:用来生成索引的目录。默认就行
过滤字段:设置过滤字段,使用地址匹配设置过滤参数(如果需要)将是该字段中的某一个或多个值
EPSGCode:指定索引投影
线程池大小:线程缓冲池大小。默认就行
发布成功后,你还可以在服务管理页面进行配置修改,特别注意的是更新索引功能耗时较长,建议更新索引时段选在深夜。
###使用正向地址匹配API
iServer提供restapi接口,例如ip:iserver/services/addressmatch-BeijingAddress/restjsr/v1/address/geocoding可以直接通过http请求完成,iclient9D for javascript也封装有对应的接口,我们以javascript接口为例实现地址匹配相关功能
varaddressUrl='ip:iserver/services/addressmatch-BeijingAddress/restjsr/v1/address'
varaddressMatchService = L.supermap.addressMatchService(addressUrl);
代码中使用iclient9D for javascript leaflet版初始化了一个地址匹配服务,下面我们着重介绍下参数
vargeoCodeParam=new SuperMap.GeoCodingParameter(options)
addressMatchService.code(geoCodeParam,callback);
其中options参数是个对象,包含以下属性
addressstring类型 地点关键词。
filtersArray类型过滤字段,限定查询区域。
fromIndexnumber类型设置返回对象的起始索引值。
maxReturnstring类型最大返回结果数。
prjCoordSysstring类型查询结果的坐标系。
toIndexnumber类型设置返回对象的结束索引值。
成功后回调函数返回的结果如下
*其中score代表匹配度。
###使用反向地址匹配API
同样的我们给定一个坐标位置就可以反向匹配出该位置的位置信息
vargeoDecodeParam=new SuperMap.GeoDecodingParameter(options)
addressMatchService.decode(geoDecodeParam,callback);
options参数如下
filtersArray 过滤字段,限定查询字段值。
fromIndexnumber 设置返回对象的起始索引值。
geoDecodingRadiusnumber 查询半径。
maxReturnnumber 最大返回结果数。
prjCoordSysstring 查询结果的坐标系。
toIndexnumber 设置返回对象的结束索引值。
xnumber 查询位置的横坐标。
ynumber 查询位置的纵坐标。
是不是非常简单赶紧动手试下吧!