ArcGIS Js/Flex等前端API(Query(StatisticDefinition)時)針對SDE的SHAPE.AREA/SHAPE.LEN知道查詢無效,而對GDB的SHAPE_Area/SHAPE_Length有效探索。


FIeld 'SHAPE.AREA' and 'SHAPE.LEN' of SDE For Oracle,Field 'SHAPE_Area' and 'SHAPE_Length' of gdb(geodatabase). The fields of GDB can be OK when QueryTask do  query then outStatistics of query be setted.

 1     require([  
 2       "esri/tasks/query", "esri/tasks/StatisticDefinition", ...   
 3     ], function(Query, StatisticDefinition, ... ) {  
 4       var query = new Query();  
 5       var statisticDefinition = new StatisticDefinition();  
 6       statisticDefinition.statisticType = "sum";  
 7       statisticDefinition.onStatisticField = "SHAPE_Area";//SHAPE.AREA failed,  
 8       statisticDefinition.outStatisticFieldName = "TotalArea";  
 9       
10       query.outStatistics = [statisticDefinition];  
11       ...  
12     });  

 

     那么問題來了,每種關系數據庫類型的幾何針對面積和長度,我們做個分析:

類型

GDB(文件Geodatabase)

Oracle

PostgreSQL

SqlServer

面積

SHAPE_Area

SHAPE.AREA

Shape_Area

SHAPE.STArea()

長度

SHAPE_Length

SHAPE.LEN

Shape_Length

SHAPE.STLength()

幾何

Geometry

ST_GEOMETRY/

SDO_GEOMETRY

簡化Geometry(如box等)

Geometry/

Geography

    針對ORACLE的圖形計算面積長度字段采用SQL語法形式,用於普通SQL查詢可以實現,如:【SHAPE.AREA>1000】;

    GIS的API開發都會有針對SDE調用Oracle/SQLServer/PostgreSQL的SQL語句情況,筆者在Flex/JS開發時針對Query的outStatistics設置StatisticDefinition時,碰到給字段onStatisticField添加值時無法查詢,查看最新API,下圖:

    JS的3系API為3.17,針對ArcGIS Server10.3部署服務,無【advancedQueryCapabilities】選項,而ArcGIS Online則有;4系API4.0目前與3系是2個不同序列,暫未詳細研究,可能ArcGIS Server Portal支持。。

    目前對此解決方法提議:對query的outStatistics不設置SHAPE.AREA字段,先做其他統計,需要面積的再做一次QueryTask條件查詢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM