Task这个东西很有用,是AJS中用于解决各种乱七八糟任务的一个类。它有很多子类,有用于空间分析的,有用于空间查询的,等等。
这篇作为补充学习的第一篇,也是进阶学习的第一篇,我就改个写法。
我将使用思维导图,更好呈现逻辑信息。
Task类的继承关系
Task类继承自Accessor类,它又有17个子类。别担心,各取所需,很少能用上超过5个子类的AJS程序,除非是一个超大的AJS集成系统。
以上有我熟知的QueryTask、RouteTask、FindTask、Geoprocessor、IdentifyTask和Locator。
其中,根据名字和经验,可能还会经常用到的有:ServiceAreaTask、ClosestFacilityTask、GeometryService和ImageServiceIdentifyTask这几个,前面两个和RouteTask是同属于网络分析的。
到补充学习这段,就不再详细介绍代码了,要介绍也是提取关键代码进行剖析。
熟知的已用过的6个类
首先介绍一下熟知的这几个Task子类,分别从“有什么用”、“怎么实例化”、“配套的类”三个方面叙述,具体的用法,请查阅官方API和相关例子:
【QueryTask】【RouteTask】【FindTask】【Geoprocessor】【IdentifyTask】【Locator】(超链接到我的博客)
直接上个大表格:
类名区分项 |
有什么用 |
怎么实例化 (ArcGIS Server服务) |
配套的类 | 主要方法与返回值类型 |
QueryTask | 空间查询 |
FeatureServer MapServer |
Query QueryResult |
query() QueryResult |
RouteTask | 路径分析 | NAServer |
RouteParameters RouteResult |
solve() RouteResult |
FindTask | 空间查找 | MapServer |
FindParameters FindResult |
execute() FindResult |
Geoprocessor |
地理处理 GIS常见分析 |
GPServer | ParameterValue |
submitJob() execute() Object |
IdentifyTask | 识别 | MapServer |
IdentifyParameters IdentifyResult |
execute() IdentifyResult[] |
Locator | 定位 |
于是我就有点郁闷,有几个是类似的,IdentifyTask、FindTask和QueryTask。
//交流中发现:IdentifyTask单用于识别,不特长于Geometry属性表的查询;
FindTask专注于属性字段的查询;
而QueryTask则更专注于几何要素的查询(功能更强大)。
从参数类Query、FindParameters、IdentifyParameters的字段数就可以大致判别了。感谢我的导师——何津。