ArcGIS Server之发布地理编码服务及arcgis api for javascript调用

0
分享 2020-09-04
地理编码服务是建立地理位置坐标与给定地址的过程,可以理解为将一个地址的描述信息映射为地图上所对应的空间位置,地理编码服务是GIS中比较重要的一个功能,地理编码服务用于在 Web 上提供地理编码功能。 如果我们知道一个具体的地理坐标,却想知道这个地方的地址,就称作反地理编码。地理编码服务支持各种操作,例如查找地址或地点、对地址或地点表进行地理编码、使用反向地理编码查找有关位置的信息等。
具体过程:
1、创建地址定位器
(1)打开工具箱ArcToolbox中的Geocoding Tools—Create Address Locator,创建新的地址定位器。

(2)创建地址定位器对话框:
a、Address Locator Style — 地址匹配的样式,这里选择简单的字段匹配General - Single Field.
b、参考数据: 选择用来匹配地址的图层。添加参考数据,单击角色列标题,然后单击主表。
c、字段映射Field Map部分应该会自动完成。如果未自动完成,请在各地址定位器字段的参考数据中选择合适的字段。名称旁带有星号 (*) 的字段是地址定位器样式必需的字段。必须通过参考数据中的有效字段对这些字段进行映射。如果有些非必填字段不适用,则可将这些字段保留为 <无>。
d、设置输出地址定位器,选择定位器的输出路径。
单击确定启动地址定位器创建过程。

该过程完成后,新的地址定位器将出现在选择的存放位置目录下。

2、发布地理编码服务
右键刚才创建的locator工具,右键Share as—Geocode Service


3、点击分析并发布服务

4、查看发布的地理编码服务

(1)测试Find Address Candidates


(2)测试 Reverse Geocode

5、利用arcgis api for javascript调用
Search widget 可用于在FeatureLayer或具有Locator的地理编码位置中搜索要素,提供了一种在定位器服务和要素服务要素层上执行搜索操作的方法。sources属性定义从中搜索Search widget 实例指定的视图的源。其中如果是Locator则使用 “esri/tasks/Locator”。下面示例是调用上面发布的地理编码服务。
具体示例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no"/>
<title>Search widget with multiple sources - 4.14</title>
<style>
html,
body,
#viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
<link rel="stylesheet" href="https://js.arcgis.com/4.14/esr ... gt%3B
<script src="https://js.arcgis.com/4.14/%26 ... gt%3B
<script>
require([
"esri/Map",
"esri/views/MapView","esri/tasks/Locator",
"esri/layers/FeatureLayer",
"esri/widgets/Search"
], function(Map, MapView,Locator,FeatureLayer, Search) {
var map = new Map({
basemap: "osm"
});
var view = new MapView({
container: "viewDiv",
map: map,
center: [112, 38]
});
var searchWidget = new Search({
view: view,
allPlaceholder: "District or Senator",
sources: [
{
locator: new Locator({ url: "https://wl.arcgisonline.cn/ser ... ot%3B }),
singleLineFieldName: "SingleKey",
name: "Custom Geocoding Service",
placeholder: "Search Geocoder",
maxResults: 8,
maxSuggestions: 10,
suggestionsEnabled: false,
minSuggestCharacters: 0
}
]
});
// Add the search widget to the top left corner of the view
view.ui.add(searchWidget, {
position: "top-right"
});
});
</script>
</head>
<body>
<div id="viewDiv">
</body>
</html>




文章来源:https://blog.csdn.net/qq_40376439/article/details/105373151

0 个评论

要回复文章请先登录注册