簡單介紹如何利用已經釋出的地圖服務進行AJS程式設計(使用AJS 4.3或更高版本)
【前言】
有好些網友問我怎麼使用Server釋出的地圖服務了,其實非常的簡單。
我在這裡先聲明:不提供Server軟體,需要的請自行使用網際網路搜尋資源;
不闡述Server如何釋出各各種服務,但是我會給出官方的文檔(點我),釋出服務其實各種老教程都很多了。
【軟體準備】
·Windows 64位以上的系統,XP可以歇菜了,Server是64位原生軟體;//Linux發行版也可以,能用Server就行
·ArcGIS for Server 10.x版本
·ArcGIS for Desktop(用于釋出服務)
如果有自己的伺服器,可以在伺服器端安裝ArcServer,但是ArcServer對伺服器的性能、帶寬和存儲有要求,請自行參考官方文檔。
當然也可以在本地安裝Server,用本機建構B/S架構。
ArcGIS桌面軟體用于釋出服務,資料自己準備。
一枚浏覽器,推薦WebKit核心的Chrome、火狐等。
一個能寫Web前端的編輯器,本人使用VSCode.
其中後兩個必須,前三個非必需,隻要得到下文提到的REST URL就可以進行AJS程式設計。
好,上課。
話說有一陣子沒寫部落格了,忙啊,看學校,複習,各種亂七八糟的事情,AJS的筆記也沒跟上,卡在一個空間查詢的例子上了。
一般安裝好ArcGIS for Server後,進入管理頁面就有一個示例服務:
點選紫色框框的a标簽,進入這個服務的具體資訊的功能頁
找到REST URL,複制下來。
現在使用AJS 4.3來建構一個最基本的SceneView網頁,代碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
<title>FeatureLayer - 4.3</title>
<link rel="stylesheet" href="https://js.arcgis.com/4.3/esri/css/main.css">
<script src="https://js.arcgis.com/4.3/"></script>
<style>
html,
body,
#viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
<script>
require([
"esri/Map",
"esri/views/SceneView",
"esri/layers/FeatureLayer",
"dojo/domReady!"
],
function(
Map, SceneView,
FeatureLayer
) {
var map = new Map({
basemap: "hybrid"
});
var view = new SceneView({
container: "viewDiv",
map: map,
});
var featureLayer = new FeatureLayer({
url: "https://localhost:6443/arcgis/rest/services/SampleWorldCities/MapServer"
});
map.add(featureLayer);
});
</script>
</head>
<body>
<div id="viewDiv"></div>
</body>
</html>
AJS使用本地【地圖服務】
其中最關鍵的就是:
var featureLayer = new FeatureLayer({
url:"https://localhost:6443/arcgis/rest/services/SampleWorldCities/MapServer"
});
url就是剛剛複制下來的REST URL,REST URL的構成大概是
“https://IP位址:端口/使用者資訊(使用者群組、使用者名等)/rest/services/服務名稱/服務類型/子項”
或者
“https://域名/後面相同”
運作起來就是:
請注意,直接複制我的的代碼是不能跑出來這個效果的,請使用能用的REST URL,AJS 4.X的示例代碼中有一些例子的URL可以測試,請自行查找。
那麼怎麼知道哪些服務對應哪些AJS 類呢?
在Layer中,官方展示頁面如下:
點我
我直接列出一些常用的好了:
問題來了,除了MapServer、FeatureServer等服務,還有NAServer很多,哪裡能用上呢?
AJS能用上的服務有限,Server本身并不隻是單獨針對AJS使用的。
在AJS的網絡分析示例中,就可以使用NAServer:
var routeTask = new RouteTask({
url: "https://route.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World"
});
還有很多服務能在AJS的例子中找到,由于AJS的筆記還沒寫完,我日後發現一個就更新一個。
Server的各種服務在AJS4.x中的具體運用
RouteTask(路徑分析)
routeTask類的url可以使用NAServer;釋出網絡分析服務可以檢視這裡:點我
相關網絡分析服務見這裡:點我
QueryTask(查詢)
QueryTask的url可以使用MapServer、FeatureServer
FindTask(查找)
FindTask可以使用MapServer執行個體化。
IdentifyTask(識别)
IdentifyTask可以使用MapServer執行個體化。
Geoprocessor(GP)
Geoprocessor可以使用GPServer執行個體化,可以根據子項進行不同的分析。在AJS的例子中,使用了可視域分析和熱力圖分析,GPServer(地理處理服務)的不同子項而已。
關于GPServer的釋出與使用,可以檢視Server的幫助文檔:點我
其實就是ArcMap的各種處理。
PointCloudLayer(點雲圖層)
點雲圖層可以為其url屬性賦一個SceneServer的URL來執行個體化。
ClosestFacilityTask(最近設施)
使用NAServer。
GeometryService(幾何服務)
使用GeometryServer;如
var geoSer = new GeometryService({url:"https://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/Geometry/GeometryServer"});
Locator(定位)
使用GeocodeServer(地理編碼服務)。
如:
var locator = new Locator({url:"http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer"});
ServiceAreaTask(服務區)
使用NAServer。(疑似)
ImageServiceIdentifyTask(影像服務識别)
疑似為MapServer,與IdentifyTask類似。