ArcGIS Maps SDK for JS:使用queryFeatures方法查詢 FeatureLayer 中符合條件的要素

文章目錄

    • 方式一:使用featureLayer.createQuery()方法
    • 方式二:使用 Query 構造函數
    • 方式三:簡化寫法

要想查詢FeatureLayer 圖層中滿足某些條件的要素,可以使用ArcGIS API for JavaScript 提供的queryFeatures() 方法和 Query 對象進行查詢。

首先,我們需要創建一個 Query 對象,用于指定查詢的條件和選項。然后,使用 FeatureLayer 的 queryFeatures() 方法來執行查詢。

方式一:使用featureLayer.createQuery()方法

// 創建一個 Query 對象
const query = featureLayer.createQuery();
query.where = "1=1"; // 查詢所有要素(默認),也可以指定特定的查詢條件
query.outFields = ["*"]; // 返回所有字段的值(默認)
//query.outFields = ["NAME", "POPULATION"]; //返回指定的字段// 執行查詢
featureLayer.queryFeatures(query).then(function(response) {// 處理查詢結果const features = response.features;features.forEach(function(feature) {// 訪問要素的屬性const attributes = feature.attributes;console.log(attributes); // 輸出要素的屬性信息});
}).catch(function(error) {console.error("查詢失敗:", error);
});

方式二:使用 Query 構造函數

// 創建一個 Query 對象
const query = new Query({where: "1=1 AND POPULATION > 100000",outFields: ["NAME", "POPULATION"],returnGeometry: true  //返回幾何信息,默認false
});// 執行查詢
featureLayer.queryFeatures(query).then(function(results) {// 處理查詢結果
});

擴展:

在 ArcGIS API for JavaScript 中,returnGeometry: true 是在查詢時指定是否返回幾何信息的一個選項。當設置為 true 時,查詢結果將包括與每個要素相關聯的幾何信息,例如點、線或多邊形等幾何形狀。這對于需要獲取要素的位置信息或在地圖上顯示查詢結果非常有用;當設置為 false 時,查詢結果將不包括幾何信息,只返回屬性信息。

如果在查詢中不指定 returnGeometry 參數,API 將默認為 returnGeometry: false,即不返回幾何信息。這意味著查詢結果將只包括所請求字段的屬性信息,而不包括與要素相關聯的幾何信息。

如果您不寫 returnGeometry: true 或 returnGeometry: false,而只是創建一個 Query 對象,并沒有明確指定 returnGeometry 參數,API 將使用默認值 returnGeometry: false,查詢結果將不包括幾何信息。

因此,根據您的需求,您可以根據是否需要要素的幾何信息來決定是否設置 returnGeometry: true。如果您只需要屬性信息而不需要幾何信息,則可以省略 returnGeometry 參數或明確設置為 false。

方式三:簡化寫法

當然,也可以在queryFeatures()方法中直接指定Query 對象,下面是一個簡化寫法

// 執行查詢
featureLayer.queryFeatures(where = "1=1", // 查詢所有要素(默認),也可以指定特定的查詢條件outFields = ["NAME", "POPULATION"] //返回指定的字段//outFields = ["*"]; // 返回所有字段的值(默認)
).then(function(response) {// 處理查詢結果const features = response.features;features.forEach(function(feature) {// 訪問要素的屬性const attributes = feature.attributes;console.log(attributes); // 輸出要素的屬性信息});
}).catch(function(error) {console.error("查詢失敗:", error);
});

在 ArcGIS Maps SDK for JavaScript 中,如果在執行查詢時將 outFields 設置為 [“*”],這將返回所有字段的值,類似于 SQL 中的 SELECT *。這意味著查詢結果將包含 FeatureLayer 中所有字段的屬性信息。
如果不指定 outFields,默認情況下查詢結果會返回所有可見字段的值。因此,如果希望獲取 FeatureLayer 中所有字段的屬性信息,可以將 outFields 設置為 [“*”],以便確保返回所有字段的值。

下面是一個完整的示例代碼

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>Query FeatureLayer Example</title><link rel="stylesheet" href="https://js.arcgis.com/4.24/esri/themes/light/main.css"><script src="https://js.arcgis.com/4.24/"></script>
</head>
<body><div id="viewDiv" style="height: 400px;"></div><script>require(["esri/Map","esri/views/MapView","esri/layers/FeatureLayer"], function(Map, MapView, FeatureLayer) {const map = new Map({basemap: "streets-navigation-vector"});const view = new MapView({container: "viewDiv",map: map,center: [-118, 34],zoom: 8});const featureLayer = new FeatureLayer({url: "URL_TO_YOUR_FEATURE_LAYER"});map.add(featureLayer);view.whenLayerView(featureLayer).then(function() {const query = featureLayer.createQuery();//query.where = "1=1"; //query.outFields = ["*"]; // 返回所有字段的值featureLayer.queryFeatures(query).then(function(response) {const features = response.features;features.forEach(function(feature) {console.log(feature.attributes);});}).catch(function(error) {console.error("查詢失敗: ", error);});});});</script>
</body>
</html>

在 ArcGIS Maps SDK for JavaScript 中,view.whenLayerView(featureLayer).then(function() { … }) 這段代碼的作用是確保在 FeatureLayer 在地圖視圖中完全加載并準備好進行交互之后再執行后續的操作。

具體來說,view.whenLayerView(featureLayer) 返回一個 Promise,在 FeatureLayer 的視圖(LayerView)準備好之后解析該 Promise。這樣做的目的是確保在執行查詢或其他與 FeatureLayer 相關的操作之前,FeatureLayer 已經在地圖視圖中準備就緒,以避免出現不完整或錯誤的操作。

在上面提供的示例代碼中,我們使用 view.whenLayerView(featureLayer) 來等待 FeatureLayer 準備就緒后,然后執行查詢操作以獲取 FeatureLayer 中所有字段的屬性信息。這樣可以確保查詢操作在 FeatureLayer 完全加載后執行,以獲得準確的結果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13721.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13721.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13721.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【linux】yumvim工具理解使用

目錄 Linux 軟件包管理器 yum 關于 rzsz 注意事項 查看軟件包 Linux開發工具 Linux編輯器-vim使用 vim的基本概念 vim的基本操作 vim正常模式命令集 vim末行模式命令集 簡單vim配置 配置文件的位置 sudo提權 Linux 軟件包管理器 yum 1.yum是什么&#xff1…

攻防世界---web---warmup

1、題目描述 2、查看源碼&#xff0c;發現有個source.php 3、訪問該文件&#xff0c;得到這一串代碼 4、分析代碼 5、訪問hint.php&#xff0c;提示flag在ffffllllaaaagggg這個文件下 6、構造payload ?filesource.php?/../../../../../../ffffllllaaaagggg

Fitting Parameterized Three-Dimensional Models to Images

摘要 基于模型的識別和運動跟蹤依賴于解決投影和模型參數&#xff0c;使其最佳適應匹配的2D圖像特征的3D模型的能力。本文將當前的參數求解方法擴展到處理具有任意曲面和任意數量的內部參數&#xff08;表示關節、可變尺寸或表面變形&#xff09;的對象。開發了數值穩定化方法…

懶人網址導航頁 search.html SQL注入漏洞復現

0x01 產品簡介 懶人網址導航系統是一種智能化的網址導航平臺,旨在幫助用戶快速找到所需的網址和資源。該系統提供了智能化的網址搜索和推薦功能,能夠根據用戶的搜索習慣和偏好推薦相關的網址和資源。同時,系統還提供了網址分類、網址收藏和網址分享等功能,方便用戶管理和共…

git常見的18條指令

使用git的時候有沒有遺忘指令的情況呢&#xff1f;小編替大家整理出來了18條常用的指令&#xff0c;大家趕緊收藏起來吧&#xff01; gti常見的18條指令 序號指令含義1git init初始化一個倉庫2git clone [url]克隆一個倉庫3git add [file]添加文件到暫存區4git commit -m "…

簡易Docker磁盤使用面板Doku

這個項目似乎有 1 年多沒更新了&#xff0c;最后發布版本的問題也沒人修復&#xff0c;所以看看就行&#xff0c;不建議安裝 什么是 Doku &#xff1f; Doku 是一個簡單、輕量級的基于 Web 的應用程序&#xff0c;允許您以用戶友好的方式監控 Docker 磁盤使用情況。Doku 顯示 D…

easyexcel導出動態標題,以及動態設置下拉選擇,并設置下拉選擇校驗

目錄 1.說明 2.示例 3.總結 1.說明 平時使用easyexcel進行導出時&#xff0c;標題的名字通過在表的實體類上添加注解的方式進行實現&#xff0c;然后傳入表的實體類的集合進行下載即可。 有這么一個需求&#xff0c;用戶可以自定義導出的模板&#xff0c;也就是說導出的模板…

南京沁恒微USB HUB CH334/CH335多種封裝規格選擇,外圍簡單,價格還美麗

概述&#xff1a; CH334 和 CH335 是符合 USB2.0 協議規范的 全速&#xff0c;下行端口支持 USB2.0 高速 480Mbps 個 TT 分時調度 4 個下行端口&#xff09;&#xff0c;還支持高性能的 工業級設計&#xff0c;外圍精簡&#xff0c;可應用于計算機和工控機主板 特點&#xff1…

精品UI響應式視頻教程知識付費系統源碼在線教育網絡課程在線點播可二開分銷分站功能

這是一款知識付費平臺模板&#xff0c;后臺可上傳本地視頻&#xff0c;批量上傳視頻連接&#xff0c; 視頻后臺可設計權限觀看&#xff0c;免費試看時間時長&#xff0c;會員等級觀看&#xff0c;付費觀看等功能&#xff0c; 也帶軟件app權限下載&#xff0c;幫助知識教育和軟件…

域名郵箱是什么?怎么注冊公司的域名郵箱?

擁有一個專業、獨特的郵箱地址不僅能提升企業形象&#xff0c;還能增強客戶信任感。域名郵箱是什么&#xff1f;域名郵箱也稱為企業郵箱或定制郵箱&#xff0c;是一種基于企業自主域名設置的電子郵件服務。本文將詳細介紹域名郵箱的概念、優勢以及如何注冊公司的域名郵箱 一、…

事務的ACID是什么及扁平化事務、鏈式事務

一、什么是事務 1.事務&#xff08;Transaction)是區別于數據庫文件系統的重要特性之一。事務會把數據庫從一種一致狀態轉換為另一種一致狀態。在數據庫提交工作時&#xff0c;可以確保要么所有修改都已經保存&#xff0c;要么所有修改都不保存。 2.InnoDB存儲引擎中的事物完…

WPF實現搜索文本高亮

WPF實現搜索文本高亮 1、使用自定義的TextBlock public class HighlightTextblock : TextBlock{public string DefaultText { get; set; }public string HiText{get { return (string)GetValue(HiTextProperty); }set { SetValue(HiTextProperty, value); }}// Using a Depend…

31.@Anonymous

1?@Anonymous原理 大家應該已經習慣我的教學套路,很多時候都是先使用,然后講述原理。 上節課我們使用了注解@Anonymous,然后接口就可以直接被訪問到了,不用token!不用token!不用token!。 我們一般知道,注解是給程序看的,給機器看的,當然也是給程序員看的。注解如果…

詳解HTML

目錄 1.HTML 結構 1.1認識HTML標簽 1.2標簽層次結構 1.3快速生成代碼框架 2.HTML常見標簽 2.1注釋標簽 2.2標題標簽&#xff1a;h1-h6 2.3段落標簽&#xff1a;p 2.4換行標簽&#xff1a;br 2.5格式化標簽 2.6圖片標簽&#xff1a;img 2.7超鏈接標簽 2.8表格標簽…

全域運營是本地生活的下半場?新的創業風口來了?

隨著全域概念的興起&#xff0c;全域運營賽道也逐漸進入人們的視野之中&#xff0c;甚至有業內人士預測&#xff0c;全域運營將會是本地生活下半場的大趨勢。 之所以這么說&#xff0c;是因為全域運營作為包含了公域和私域內所有運營業務的新模式&#xff0c;不僅能同時做所有本…

設計模式-解釋器模式

作者持續關注 WPS二次開發專題系列&#xff0c;持續為大家帶來更多有價值的WPS開發技術細節&#xff0c;如果能夠幫助到您&#xff0c;請幫忙來個一鍵三連&#xff0c;更多問題請聯系我&#xff08;QQ:250325397&#xff09; 定義 解釋器模式&#xff08;Interpreter Pattern&…

vue3 組件刷新

在 Vue 3 中&#xff0c;如果你想刷新一個組件&#xff0c;有幾種方法可以實現。 使用 key 屬性: 當你想要強制重新渲染一個組件時&#xff0c;你可以為其添加一個獨特的 key 屬性。當 key 屬性的值改變時&#xff0c;Vue 會強制組件重新創建。 <template> <MyComp…

jQuery 中的toggleClass應用 (含代碼)

直接上代碼 <!DOCTYPE html> <html><head><style>.info {color: green;}</style></head><body><input type"button" value"點擊" onclick"changeClass()" /><div id"x1">例子…

第十五屆藍橋杯國賽前的問題記錄

文章目錄 遇到的問題問題解析1.生成m-n的隨機數&#xff0c;包括倆個數在內2.fetch解析后如何獲取結果3.獲取多選下拉框&#xff08;select標簽設置multiple屬性&#xff09;的值4.如何刪除某個獲取到的節點5.vue中遇到多選下拉框如何處理 小結 遇到的問題 生成m-n的隨機數fet…

(delphi11最新學習資料) Object Pascal 學習筆記---第12章第3節 ( RTL 中的類引用 )

12.3.1 RTL 中的類引用** ? System 單元和其他核心 RTL 單元聲明了許多類引用&#xff0c;包括以下幾種&#xff1a; TClass class of TObject; ExceptClass class of Exception; TComponentClass class of TComponent; TControlClass class of TControl; TFormClass c…