詳解ArcGIS for JS

ArcGIS for JS是Esri公司提供的一種基於JavaScript API的Web GIS開發平台。通過ArcGIS for JS,開發人員可以利用圖層、地圖和3D場景等組件快速搭建出豐富、交互性高的Web GIS應用。本文將從多個方面對ArcGIS for JS進行詳細介紹。

一、ArcGIS for JS介紹

ArcGIS for JS歷經多年的發展,已經從最初的二維地圖API逐漸發展成一套功能強大、集成多種地理信息技術的Web GIS開發平台。目前,ArcGIS for JS主要支持以下功能:

  • 製圖和可視化:通過ArcGIS API,可以將數據在地圖上進行可視化呈現。
  • GIS分析:可以進行空間分析、數據挖掘、模型分析等GIS分析操作。
  • 數據編輯:支持在線對地圖進行編輯,包括屬性編輯、幾何編輯等。
  • 應用程序開發:可以通過ArcGIS for JS進行Web GIS應用程序的開發,可以在任何設備上訪問。

ArcGIS for JS依賴於Esri ArcGIS Online或ArcGIS Enterprise,使得用戶可以快速、輕鬆的搭建開發環境,開發Web GIS應用程序。

二、ArcGIS for JS的使用

1、加載地圖

require(["esri/views/MapView", "esri/WebMap"], function(MapView, WebMap) {
    var webmap = new WebMap({
        portalItem: { 
            id: "webmap_id" 
        }
    });

    var view = new MapView({
        map: webmap,
        container: "viewDiv"
    });
});

上述代碼使用ArcGIS for JS創建了一個地圖,並將地圖添加到指定的容器中,可以在任何設備上訪問。

2、加載圖層

require(["esri/layers/FeatureLayer"], function(FeatureLayer) {
    var featureLayer = new FeatureLayer({
        url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/3"
    });

    map.add(featureLayer);
});

上述代碼使用ArcGIS for JS加載一個FeatureLayer,並將其添加到地圖上。

3、數據查詢

require(["esri/tasks/support/Query"], function(Query) {
    var query = new Query({
        where: "POP2000 > 20000",
        outFields: ["NAME", "POP2000", "POP_RANK"]
    });

    featureLayer.queryFeatures(query).then(function(results) {
        // results.features返回查詢到的要素列表
    });
});

上述代碼使用ArcGIS for JS進行數據查詢,並將查詢到的結果返回。

4、3D場景開發

require(["esri/views/SceneView", "esri/WebScene"], function(SceneView, WebScene) {
    var webscene = new WebScene({
        portalItem: {
            id: "webscene_id" 
        }
    });

    var view = new SceneView({
        map: webscene,
        container: "viewDiv"
    });
});

上述代碼使用ArcGIS for JS創建一個3D場景,並將其添加到指定的容器中。

三、ArcGIS for JS加載slpk數據

1、加載slpk數據

require([
  "esri/WebScene",
  "esri/layers/SceneLayer",
  "esri/views/SceneView"
], function(WebScene, SceneLayer, SceneView) {
  const webscene = new WebScene({
    portalItem: {
      id: "de8f3adbcf3441efb1ea1caf6db8d2a6"
    }
  });
  const view = new SceneView({
    container: "viewDiv",
    map: webscene
  });

  const slpkLayer = new SceneLayer({
    portalItem: {
      id: "4fdf1531c7384481a36d96cf7521c88d"
    }
  });

  webscene.add(slpkLayer);
});

2、加載slpk並設置邊界框(BoundingBox)

require([
  "esri/layers/SceneLayer",
  "esri/layers/support/Raster",
  "esri/geometry/Extent",
], function(SceneLayer, Raster, Extent) {

  const url = "http://srvags6qisvr001/arcgis/rest/directories/arcgisplatform/content/items/b07413a8be6c4 cf29fdb60dada52d94f/data";
  //加載slpk數據
  const slpkLayer = new SceneLayer({
    title: "Building",
    url: url,
    outFields: ["*"],
  });

  //設置邊界框
  const bbox = new Extent({
    xmin: -13501915.078277311,
    ymin: 4429443.939927257,
    xmax: -13496639.499738102,
    ymax: 4433217.518466467,
    spatialReference: {
      wkid: 3857,
    },
  });

  slpkLayer.when(() => {
    //設置圖層範圍
    slpkLayer.fullExtent = bbox;
    //添加到地圖中
    map.add(slpkLayer);
  });
});

3、加載slpk數據並進行數據查詢

require([
  "esri/layers/SceneLayer",
  "esri/tasks/support/Query"
], function(SceneLayer, Query){

  const slpkLayer = new SceneLayer({
    portalItem:{
      id: "6b9f09925b2948f4b6939122f15ebab1"
    },
    outFields:["*"]
  });

  //設置查詢條件
  const query = new Query();
  query.where = "buildingheight > 100";

  slpkLayer.queryFeatures(query).then((featureSet) => {
    // featureSet.features包含查詢到的要素
  });
});

四、總結

本文從多個方面對ArcGIS for JS進行了詳細的介紹,從基礎的地圖、圖層加載到高級的數據查詢、3D場景開發,都進行了詳細說明。同時,本文還會了如何加載並使用slpk數據,希望對讀者有所幫助。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/302762.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-31 11:48
下一篇 2024-12-31 11:48

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Python for循環求1到100的積

    Python中的for循環可以方便地遍歷列表、元組、字典等數據類型。本文將以Python for循環求1到100的積為中心,從多個方面進行詳細闡述。 一、for循環語法 Pytho…

    編程 2025-04-29
  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • Python使用for循環打印99乘法表用法介紹

    本文介紹如何使用python的for循環語句來打印99乘法表,我們將從需要的基本知識、代碼示例以及一些加強版來詳細講解。 一、基礎知識 在學習如何使用for循環打印99乘法表之前,…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字符無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字符無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • Python for循環優化

    本文將介紹如何對Python中的for循環進行優化。 一、使用range()代替直接迭代 Python中的for循環本質上是一種迭代操作,可以對列表、元組、集合等數據結構進行遍歷。…

    編程 2025-04-28
  • ArcGIS的Python腳本需要主函數嗎?

    是的,ArcGIS的Python腳本需要主函數,主函數是Python腳本的入口和起點,沒有主函數腳本無法運行。 一、主函數的作用 在Python腳本中,主函數是代碼的入口,所有的代…

    編程 2025-04-28
  • in和for的用法區別

    對於Python編程中的in和for關鍵詞,我們在實際編碼中很容易混淆。本文將從多個方面詳細闡述它們的用法區別,幫助讀者正確使用in和for。 一、in關鍵詞 in是用來判斷一個元…

    編程 2025-04-28

發表回復

登錄後才能評論