<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          前端入門(mén)ArcGIS教程(一)

          共 9791字,需瀏覽 20分鐘

           ·

          2021-09-26 20:28

          本文適合對(duì)圖形、地圖、可視化感興趣的小伙伴閱讀。

          歡迎關(guān)注前端早茶,與廣東靚仔攜手共同進(jìn)階~

          作者:廣東靚仔

          一、前言

          本文基于ArcGIS官方文檔:

          https://developers.arcgis.com/javascript/latest/api-reference/

          ? ??在開(kāi)始講解ArcGIS內(nèi)容前,廣東靚仔從官網(wǎng)找來(lái)了幾張Demo效果圖,給小伙伴們一個(gè)直觀的了解。3D效果圖:

          b0e867de1ebc2ebed7665df0a924c98e.webp

          2D效果圖:

          2c128e72c33d7045bb48041100d8363f.webp


          建筑效果圖:

          015794d1eb36722438990d0629c6cfff.webp


          關(guān)于ArcGIS的內(nèi)容,廣東靚仔后續(xù)會(huì)持續(xù)分享這個(gè)主題的內(nèi)容。
          這篇文章先給大家來(lái)個(gè)初步認(rèn)識(shí)

          二、使用場(chǎng)景

          ? ?ArcGIS 包括地圖、場(chǎng)景和應(yīng)用程序,允許整個(gè)組織探究、了解和測(cè)量地理數(shù)據(jù)。1、在地圖中查看數(shù)據(jù)ArcGIS 中查找到的交互式地圖可用于探究、可視化和了解 2D 中組織的數(shù)據(jù)。彈出窗口、圖例、過(guò)濾器和透明度等數(shù)據(jù)查看工具可用于重點(diǎn)查看對(duì)您重要的數(shù)據(jù)。2、在場(chǎng)景中查看數(shù)據(jù)將內(nèi)置場(chǎng)景查看器與桌面 Web 瀏覽器一同使用,以瀏覽符號(hào)化的地理空間內(nèi)容。場(chǎng)景可包括允許在直觀的交互式 3D 環(huán)境中顯示和分析地理信息的 2D 和 3D 圖層、樣式和配置的集合。3、執(zhí)行分析地圖可用于查找模式、評(píng)估趨勢(shì)和制定決策。但是僅通過(guò)查看地圖,許多模式和關(guān)系往往并不清晰。分析工具可用于量化數(shù)據(jù)模式和關(guān)系并將結(jié)果以地圖、表格和圖表的形式顯示出來(lái)。通過(guò)地圖查看器中提供的分析工具,您可以使用包括可視分析在內(nèi)的多種途徑來(lái)解決問(wèn)題并制定重要決策。4、編輯地圖中的要素

          采集數(shù)據(jù)、可視化時(shí)間、測(cè)量和查看坐標(biāo)、獲取方向

          三、ArcGIS安裝

          ? ? 一、安裝ArcGIS License Manager溫馨提示

          ArcGIS 10.X系列軟件的安裝過(guò)程大同小異,大致的安裝步驟均為

          • 安裝License加補(bǔ)丁

          • 安裝Desktop然后加補(bǔ)丁

          • 安裝中文語(yǔ)言

          大家可以按照這個(gè)思路去安裝,如果安裝失?。?/span>關(guān)閉防火墻、徹底關(guān)閉Windows Defender,重啟。

          另外,軟件正常安裝成功之后,運(yùn)行的時(shí)候可能會(huì)遇到殺毒軟件提示刪除補(bǔ)丁文件的情況,此時(shí)一定要添加信任,將補(bǔ)丁文件列入殺毒軟件信任列表,否則可能會(huì)遇到打不開(kāi)的情況。

          1、解壓安裝包ArcGIS_Desktop_102_134924.iso2、打開(kāi)ESRI.exe,點(diǎn)擊ArcGIS License Manager中的Setup,如下圖所示:

          ec601b8acde8a4c4bf6f4db35f782d93.webp


          3、點(diǎn)擊NEXT、NEXT、AGREE
          4、選擇安裝路徑,這里默認(rèn)即可(當(dāng)然也可以自己定義安裝路徑,不要出現(xiàn)中文路徑,否則會(huì)出現(xiàn)wanming),點(diǎn)擊Next。

          8f6a8a89b67924855757d221c43d23ee.webp

          5、點(diǎn)擊Install、點(diǎn)擊Finish
          6、點(diǎn)擊Stop,再點(diǎn)擊OK。Tips:?如果不點(diǎn)擊Stop,那么服務(wù)會(huì)一直運(yùn)行,這樣會(huì)導(dǎo)致后面拷貝補(bǔ)丁文件的時(shí)候,無(wú)法正??截?。

          3b961a7f5937a9c138956a57bbf9c2ca.webp

          7、在軟件安裝包下找到Crack文件夾,將里的兩個(gè)文件(ARGIS.exe和service.txt)拷貝到ArcGIS License Manager的安裝目錄的C:\Program Files (x86)\ArcGIS\License10.2\bin下(也可以將整個(gè)bin文件夾拷貝過(guò)去,跟安裝路徑下已有的bin文件夾合并),注意如果前面改了安裝路徑,要對(duì)應(yīng)自己的路徑,提示已經(jīng)存在,選擇復(fù)制和替換。

          aa1587aa204afe90b449f0b9807e084e.webp

          8、開(kāi)始→所有程序→ArcGIS→License Manager→License Server Administrator。9、依次點(diǎn)擊:?jiǎn)?dòng)→重新讀取→確定。

          76bcde6532c75ea7d0d6b0e21251c378.webp


          二、安裝ArcGIS for Desktop1、點(diǎn)擊ESRI.exe中ArcGIS for Desktop中的Setup。

          be4542230eda8cf4a9d5e22c36401e10.webp

          2、點(diǎn)擊NEXT、AGREE3、選擇完整安裝Complete

          cb8f487afd7893f9059b2bb618d2d351.webp

          4、這里可以選擇默認(rèn)安裝路徑,點(diǎn)擊Next5、python安裝路徑,默認(rèn),Next6、點(diǎn)擊Finish7、在產(chǎn)品中選擇Advanced(ArcInfo)Concurrent Use,將License Manager改為localhost,點(diǎn)擊OK。

          2aeacdee37b3830ce910508222a37da5.webp

          8、點(diǎn)擊OK,完成安裝。9、如果有需要可以自行安裝中文包
          操作:開(kāi)始菜單→所有程序→ArcGIS→ArcGIS Administrator,如下所示,點(diǎn)擊“高級(jí)”。

          四、2D demo分享

          1.參考 ArcGIS API for JavaScript

          1、設(shè)置一個(gè)類(lèi)似于以下示例的基本 HTML 文檔:

          <!DOCTYPE?html>
          <html>
          ??<head>
          ????<meta?charset="utf-8"?/>
          ????<meta?name="viewport"?content="initial-scale=1,?maximum-scale=1,?user-scalable=no"?/>
          ????<title>Intro?to?MapView?-?Create?a?2D?map</title>
          ??</head>
          </html>

          <head>標(biāo)簽內(nèi),使用<script><link>標(biāo)簽引用 ArcGIS API for JavaScript?:

          <link?rel="stylesheet"?href="https://js.arcgis.com/4.21/esri/themes/light/main.css"?/>
          <script?src="https://js.arcgis.com/4.21/"></script>

          <script>標(biāo)簽從 CDN 加載 ArcGIS API for JavaScript。當(dāng) API 新版本發(fā)布時(shí),更新版本號(hào)以匹配新發(fā)布的版本。

          <link>標(biāo)簽引用main.css包含特定于 Esri 小部件和組件的樣式的樣式表。

          2. 加載模塊

          使用第二個(gè)<script>標(biāo)簽從 API 加載特定模塊。使用以下代碼段中的語(yǔ)法加載以下模塊:

          esri/Map?- 加載特定于創(chuàng)建地圖的代碼

          esri/views/MapView?- 加載允許以 2D 方式查看地圖的代碼

          <script>
          ??require([?"esri/Map",?"esri/views/MapView"?],?(Map,?MapView)?=>?{
          ????//?Code?to?create?the?map?and?view?will?go?here
          ??});
          </script>

          在構(gòu)建簡(jiǎn)單頁(yè)面或進(jìn)行試驗(yàn)時(shí),將 JavaScript 放入腳本標(biāo)記中很有用,但不適用于較大的應(yīng)用程序。在構(gòu)建更大的應(yīng)用程序時(shí),所有 JavaScript 都應(yīng)該在單獨(dú)的.js文件中。

          全局require()函數(shù)用于加載 API 的AMD模塊。要了解有關(guān) API 不同模塊的更多信息,請(qǐng)?jiān)L問(wèn)工具指南簡(jiǎn)介頁(yè)面。

          3. 創(chuàng)建地圖

          使用 來(lái)創(chuàng)建新地圖Map,它是對(duì)從esri/Map模塊加載的 Map 類(lèi)的引用。我們可以basemap通過(guò)將對(duì)象傳遞給 Map 構(gòu)造函數(shù)來(lái)指定地圖屬性,例如。

          require(["esri/Map",?"esri/views/MapView"],?(Map,?MapView)?=>?{
          ??const?map?=?new?Map({
          ????basemap:?"topo-vector"
          ??});
          });

          其他底圖選項(xiàng)包括:satellitehybrid、

          gray-vectordark-gray-vector、

          oceans、streets-vector、osm

          national-geographic、

          streets-night-vector

          通過(guò)修改沙箱中basemap選項(xiàng)來(lái)使用備用底圖。查看Map 類(lèi)以獲取有關(guān)其他地圖選項(xiàng)的更多詳細(xì)信息。

          4. 創(chuàng)建二維視圖

          查看在 HTML 文件中充當(dāng)容器的參考節(jié)點(diǎn),允許用戶(hù)查看 HTML 頁(yè)面內(nèi)的地圖。MapView通過(guò)將對(duì)象傳遞給其構(gòu)造函數(shù)來(lái)創(chuàng)建一個(gè)新對(duì)象并設(shè)置其屬性:

          require(["esri/Map",?"esri/views/MapView"],?(Map,?MapView)?=>?{
          ??const?map?=?new?Map({
          ????basemap:?"topo-vector"
          ??});

          ??const?view?=?new?MapView({
          ????container:?"viewDiv",?//?Reference?to?the?DOM?node?that?will?contain?the?view
          ????map:?map?//?References?the?map?object?created?in?step?3
          ??});
          });

          在這個(gè)片段中,我們將container屬性設(shè)置為將保存地圖的 DOM 節(jié)點(diǎn)的名稱(chēng),在這種情況下,我們使用元素的id屬性<div>。該map屬性引用了我們?cè)谏弦徊街袆?chuàng)建的地圖對(duì)象。請(qǐng)參閱MapView 文檔,可以在視圖上設(shè)置的其他屬性,包括centerzoom,可用于定義視圖的初始范圍。

          5.定義頁(yè)面內(nèi)容

          現(xiàn)在創(chuàng)建地圖和視圖所需的 JavaScript 已完成!下一步是添加相關(guān)的 HTML 以查看地圖。對(duì)于這個(gè)例子,HTML 非常簡(jiǎn)單:添加一個(gè)<body>標(biāo)簽,它定義了在瀏覽器中可見(jiàn)的內(nèi)容,以及<div>將在其中創(chuàng)建視圖的主體內(nèi)的單個(gè)元素。

          <body>
          ??<div?id="viewDiv"></div>
          </body>

          <div>有一個(gè)id“viewDiv”的匹配id傳遞到MapView類(lèi)的container構(gòu)造函數(shù)屬性。

          6. 設(shè)計(jì)頁(yè)面

          使用<style>.css 文件中的標(biāo)簽設(shè)置頁(yè)面內(nèi)容的樣式<head>。要使地圖填滿(mǎn)瀏覽器窗口,請(qǐng)?jiān)陧?yè)面的 中添加以下 CSS?<style>

          <style>
          ??html,
          ??body,
          ??#viewDiv?{
          ????padding:?0;
          ????margin:?0;
          ????height:?100%;
          ????width:?100%;
          ??}
          </style>

          如果現(xiàn)在已經(jīng)使用 ArcGIS API for JavaScript 4.0 在 2D 中構(gòu)建了我們的第一個(gè) Web 應(yīng)用程序!最終 HTML 代碼應(yīng)如下所示:

          <!DOCTYPE?html>
          <html>
          ??<head>
          ????<meta?charset="utf-8"?/>
          ????<meta?name="viewport"?content="initial-scale=1,?maximum-scale=1,?user-scalable=no"?/>
          ????<title>Intro?to?MapView?-?Create?a?2D?map</title>
          ????<style>
          ??????html,
          ??????body,
          ??????#viewDiv?{
          ????????padding:?0;
          ????????margin:?0;
          ????????height:?100%;
          ????????width:?100%;
          ??????}
          ????
          </style>
          ????<link?rel="stylesheet"?href="https://js.arcgis.com/4.21/esri/themes/light/main.css"?/>
          ????<script?src="https://js.arcgis.com/4.21/"></script>
          ????<script>
          ??????require(["esri/Map",?"esri/views/MapView"],?(Map,?MapView)?=>?{
          ????????const?map?=?new?Map({
          ??????????basemap:?"topo-vector"
          ????????});
          ????????const?view?=?new?MapView({
          ??????????container:?"viewDiv",?//?Reference?to?the?view?div?created?in?step?5
          ??????????map:?map,?//?Reference?to?the?map?object?created?before?the?view
          ??????????zoom:?4,?//?Sets?zoom?level?based?on?level?of?detail?(LOD)
          ??????????center:?[15,?65]?//?Sets?center?point?of?view?using?longitude,latitude
          ????????});
          ??????});
          ????
          </script>
          ??</head>
          ??<body>
          ????<div?id="viewDiv"></div>
          ??</body>
          </html>

          五、3D demo分享

          1.參考 ArcGIS API for JavaScript

          1.1、首先,設(shè)置一個(gè)類(lèi)似于以下示例的基本 HTML 文檔

          <!DOCTYPE?html>
          <html>
          ??<head>
          ????<meta?charset="utf-8"?/>
          ????<meta?name="viewport"?content="initial-scale=1,?maximum-scale=1,?user-scalable=no"?/>
          ????<title>廣東靚仔實(shí)現(xiàn)2D?demo</title>
          ??</head>
          </html>

          1.2、在<head>標(biāo)簽內(nèi),使用<script>和<link>標(biāo)簽引用 ArcGIS API for JavaScript :

          <link?rel="stylesheet"?href="https://js.arcgis.com/4.21/esri/themes/light/main.css"?/>
          <script?src="https://js.arcgis.com/4.21/"></script>

          該<script>標(biāo)簽從 CDN 加載 ArcGIS API for JavaScript。當(dāng) API 新版本發(fā)布時(shí),更新版本號(hào)以匹配新發(fā)布的版本。


          該<link>標(biāo)簽引用main.css包含特定于 Esri 小部件和組件的樣式的樣式表。

          2. 加載模塊

          使用第二個(gè)<script>標(biāo)簽從 API 加載特定模塊。使用以下代碼段中的語(yǔ)法加載以下模塊:


          esri/Map - 加載特定于創(chuàng)建地圖的代碼

          esri/views/SceneView - 加載允許以 3D 方式查看地圖的代碼

          <script>
          ??require([?"esri/Map",?"esri/views/SceneView"?],?(Map,?SceneView)?=>?{
          ????//?Code?to?create?the?map?and?view?will?go?here
          ??});
          </script>

          在構(gòu)建簡(jiǎn)單頁(yè)面或進(jìn)行試驗(yàn)時(shí),將 JavaScript 放入腳本標(biāo)記中很有用,但不適用于較大的應(yīng)用程序。在構(gòu)建更大的應(yīng)用程序時(shí),所有 JavaScript 都應(yīng)該在單獨(dú)的.js文件中。

          全局require()函數(shù)用于加載 API 的AMD模塊。要了解有關(guān) API 不同模塊的更多信息,請(qǐng)?jiān)L問(wèn)工具指南簡(jiǎn)介頁(yè)面。

          3. 創(chuàng)建地圖

          使用 來(lái)創(chuàng)建新地圖Map,它是對(duì)從esri/Map模塊加載的 Map 類(lèi)的引用。我們可以basemap通過(guò)將對(duì)象傳遞給 Map 構(gòu)造函數(shù)來(lái)指定地圖屬性,例如和 'ground。

          require(["esri/Map",?"esri/views/SceneView"],?(Map,?SceneView)?=>?{
          ??const?map?=?new?Map({
          ????basemap:?"topo-vector",
          ????ground:?"world-elevation"
          ??});
          });

          其他底圖選項(xiàng)包括:satellite、hybrid、

          gray-vectordark-gray-vector、

          oceans、streets-vector、osm

          national-geographic、

          streets-night-vector。

          通過(guò)修改沙箱中basemap選項(xiàng)來(lái)使用備用底圖。查看Map 類(lèi)以獲取有關(guān)其他地圖選項(xiàng)的更多詳細(xì)信息。

          'Map' 的 'ground' 屬性指定地圖的表面屬性。僅在將地圖添加到 3D SceneView 時(shí)才相關(guān)。字符串“world-elevation”指定使用 World Elevation Service 的地面實(shí)例。

          4. 創(chuàng)建 3D 視圖

          查看在 HTML 文件中充當(dāng)容器的參考節(jié)點(diǎn),允許用戶(hù)查看 HTML 頁(yè)面內(nèi)的地圖。SceneView通過(guò)將對(duì)象傳遞給其構(gòu)造函數(shù)來(lái)創(chuàng)建一個(gè)新對(duì)象并設(shè)置其屬性:

          require(["esri/Map",?"esri/views/SceneView"],?(Map,?SceneView)?=>?{
          ??const?map?=?new?Map({
          ????basemap:?"topo-vector",
          ????ground:?"world-elevation"
          ??});
          ??const?view?=?new?SceneView({
          ????container:?"viewDiv",?//?Reference?to?the?DOM?node?that?will?contain?the?view
          ????map:?map?//?References?the?map?object?created?in?step?3
          ??});
          });

          在這個(gè)片段中,我們將container屬性設(shè)置為將保存地圖的 DOM 節(jié)點(diǎn)的名稱(chēng),在這種情況下,我們使用元素的id屬性<div>。該map屬性引用了我們?cè)谏弦徊街袆?chuàng)建的地圖對(duì)象。請(qǐng)參閱SceneView 文檔可以在視圖上設(shè)置的其他屬性,包括centerscale,可用于定義視圖的初始范圍。

          5.定義頁(yè)面內(nèi)容

          現(xiàn)在創(chuàng)建地圖和視圖所需的 JavaScript 已完成!下一步是添加相關(guān)的 HTML 以查看地圖。對(duì)于這個(gè)例子,HTML 非常簡(jiǎn)單:添加一個(gè)<body>標(biāo)簽,它定義了在瀏覽器中可見(jiàn)的內(nèi)容,以及<div>將在其中創(chuàng)建視圖的主體內(nèi)的單個(gè)元素。

          <body>
          ??<div?id="viewDiv"></div>
          </body>

          <div>有一個(gè)id“viewDiv”的匹配id傳遞給SceneView的container在constructor屬性。

          6. 設(shè)計(jì)頁(yè)面

          使用<style>.css 文件中的標(biāo)簽設(shè)置頁(yè)面內(nèi)容的樣式<head>。要使地圖填滿(mǎn)瀏覽器窗口,請(qǐng)?jiān)陧?yè)面的 中添加以下 CSS?<style>

          <style>
          ??html,
          ??body,
          ??#viewDiv?{
          ????padding:?0;
          ????margin:?0;
          ????height:?100%;
          ????width:?100%;
          ??}
          </style>

          我們現(xiàn)在已經(jīng)使用 ArcGIS API for JavaScript 構(gòu)建了我們的第一個(gè) 3D 網(wǎng)絡(luò)應(yīng)用程序。最終 HTML 代碼應(yīng)如下所示:

          <!DOCTYPE?html>
          <html>
          ??<head>
          ????<meta?charset="utf-8"?/>
          ????<meta?name="viewport"?content="initial-scale=1,?maximum-scale=1,?user-scalable=no"?/>
          ????<title>Intro?to?SceneView?-?Create?a?3D?map</title>
          ????<style>
          ??????html,
          ??????body,
          ??????#viewDiv?{
          ????????padding:?0;
          ????????margin:?0;
          ????????height:?100%;
          ????????width:?100%;
          ??????}
          ????
          </style>
          ????<link?rel="stylesheet"?href="https://js.arcgis.com/4.21/esri/themes/light/main.css"?/>
          ????<script?src="https://js.arcgis.com/4.21/"></script>
          ????<script>
          ??????require(["esri/Map",?"esri/views/SceneView"],?(Map,?SceneView)?=>?{
          ????????const?map?=?new?Map({
          ??????????basemap:?"topo-vector",
          ??????????ground:?"world-elevation"
          ????????});
          ????????const?view?=?new?SceneView({
          ??????????container:?"viewDiv",?//?Reference?to?the?scene?div?created?in?step?5
          ??????????map:?map,?//?Reference?to?the?map?object?created?before?the?scene
          ??????????scale:?50000000,?//?Sets?the?initial?scale?to?1:50,000,000
          ??????????center:?[-101.17,?21.78]?//?Sets?the?center?point?of?view?with?lon/lat
          ????????});
          ??????});
          ????
          </script>
          ??</head>
          ??<body>
          ????<div?id="viewDiv"></div>
          ??</body>
          </html>

          六、總結(jié)

          在我們閱讀完官方文檔后,我們一定會(huì)進(jìn)行更深層次的學(xué)習(xí),比如看下框架底層是如何運(yùn)行的,以及源碼的閱讀。? ? 這里廣東靚仔給下一些小建議:
          • 在看源碼前,我們先去官方文檔復(fù)習(xí)下框架設(shè)計(jì)理念、源碼分層設(shè)計(jì)
          • 閱讀下框架官方開(kāi)發(fā)人員寫(xiě)的相關(guān)文章
          • 借助框架的調(diào)用棧來(lái)進(jìn)行源碼的閱讀,通過(guò)這個(gè)執(zhí)行流程,我們就完整的對(duì)源碼進(jìn)行了一個(gè)初步的了解
          • 接下來(lái)再對(duì)源碼執(zhí)行過(guò)程中涉及的所有函數(shù)邏輯梳理一遍

          關(guān)注我,一起攜手進(jìn)階

          歡迎關(guān)注前端早茶,與廣東靚仔攜手共同進(jìn)階~

          瀏覽 113
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久播视频 | 亚洲电影无码在线观看视频 | 成年女人免费视频 | 男人AV天堂电影 | 亚洲蜜桃一区二区 |