要说GIS空间分析最经典的例子,就是缓冲区分析了. 本例使用geometryEngine来绘制缓冲区环.因为官方给的例子有3D和2D场景,所以就会显得比较复杂. 当鼠标在视图上点击时,就会生成一个缓冲区环(以点击的点为中心): 当鼠标拖拽时,若不是漫游状态,则缓冲区环也会跟着一起动. 我会把生成缓冲区的核心代码用大标题红色标出,各位可以直接跳到那里学缓冲区的生成. 首先了解一下,缓冲区是以什么样的东西存在的? 在桌面GIS里,缓冲区就是一个面要素,可以是要素类也可以是shp文件. 在AJS里,缓…
放着好好的成熟的AJS 3.19不学,为什么要去碰乳臭未干的AJS 4.2? 4.2全线基础学习请点击[直达] 4.3及更高版本的补充学习请关注我的博客. ArcGIS API for JavaScript 4.2概述 AJS 4.2,即ArcGIS API for JavaScript 4.2,是美国ESRI公司针对WebGIS市场推出的.利用JavaScript和Dojo开发的一款产品,它在2016年12月发布.而AJS 4.0 beta则在一年前就发布了. 关于AJS3和AJS4选择的问题…
ArcGIS API for JavaScript 4.2直接从官网的Sample中学习,API Reference也是从官网翻译理解过来,鉴于网上截稿前还没有人发布过4.2的学习笔记,我就试试吧. 什么是ArcGIS API for JS?这里就不多介绍了,最关键的一点是4.x版本与3.x版本的变化,按官方的意思是重新写了底层. 笔记中规定: ArcGIS API for JavaScript简称AJS 使用CDN(即不配置本地环境)进行测试开发 其余根据需要进行修改.增删. 要将地图显示在h…
内容如上,截图自ESRI官网,连接:ArcGIS API for JavaScript 4.2 [Get Started] 类似于绪论一样的东西,抽取了最需要关注的几个例子.如:加载Map和View,加载layers,使用弹出窗口,视觉化,与使用窗口小部件.(wtf居然没有分析你想搞事情啊web除了展示难道不应该有()&&*--@) [Mapping and Views] (点击进入我写的章节详细介绍) 最基础的,知道地图和视图的区别,能使用2D和3D地图,对地图的布局有一定的了解,对地图…
这节对Popups这一章的最后两个例子进行介绍和解析. 第一个[Popup Actions]介绍了弹窗中如何自定义工具按钮(名为actions),以PopupTemplate+FeatureLayer的形式测量要素的长度为例子进行介绍. 第二个[Custom popup actions per feature]则是上一个的升级,如果说上一个例子的功能是写死的,那么这个例子就把这个功能写活了.什么意思呢?上个例子的测距仅仅能测距,没有什么别的特别的.而这个例子以啤酒店的分布(点要素图层)为例,在自…
有人问我怎么这个系列没有写自己做的东西呢? 大哥大姐,这是"学习笔记"啊!当然主要以解读和笔记为主咯. 也有人找我要实例代码(不是示例),我表示AJS尚未成熟,现在数据编辑功能才简略地在AJS 4.3中出现,4.2是没有的,widget和分析功能也不是很完善,还是再等等吧,先学着基础,其他的以后再说. 本节我会紧随这个例子学习一下Query这个类,作为图层查询方法的重要参数,它起了传递查询用的信息的作用. 本例对应官方的例子是:Query a SceneLayer's linked F…
要说网页端最经典的GIS应用,非网络分析莫属了. 什么?你没用过?百度高德谷歌地图的路线分析就是活生生的例子啊!只不过它们是根据大实际背景优化了结果显示而已. 这个例子使用RouteTask进行网络分析,我会先讲讲什么是RouteTask,再讲讲这个例子是怎么用的,这个例子代码量不多. 在官方的例子中,标题为:SimpleRouting - RouteTask 看看结果 点击两个点,安静等待十秒左右就会出现这个紫色的路线了.当然右键点击也是一样的.反应比较慢. RouteTask类 这个例子用到…
开森,最关注的空间分析章节终于到了,在空间查询那节逻辑性的代码简直要命(呵呵,空间分析的代码也要命...). 上目录截图: [Geodesic buffers(GeometryEngine)] 使用GeometryEngine这个类计算缓冲区,用是Graphics绘图技术. [Calculate Viewshed(Geoprocessing)] 使用Geoprocessing进行可视域分析,结果呈现在SceneView上,用色斑显示. [Calculate Hotspot(Geoprocessi…
文前说明:关于style就是页面的css暂时不做评论,因为官方给的例子的样式实在太简单了,照抄阅读即可. 这篇文章有着大量AJS 4.x版本添加的内容,如监听watch.Promise对象.回调函数.异步处理等内容,原理性的东西我会在文末解释,各位看官不用担心看不懂,我尽量用通俗的语言解释这些. 惯例,如果不习惯从头看到尾,可以直接跳到后面看总结. 大家应该看过商业地图的缩略图功能吧?以度娘地图为例,在使用街景地图的时候,左下角会出现一个地点一样的2D小地图: 这个就是鹰眼功能的应用,在很多桌面…
上一篇中提到,空间搜索小部件是Search这个类的实例化,作为视图的ui属性添加进去后,视图就会出现搜索框了. 这节的主体代码和上篇几乎一致,区别就在上篇提及的sources属性. 先看看结果: 由于不太清楚要素图层里有什么东西,随便输了个字母匹配,结果如图,中央出现了一个图案并弹窗. 开始讲课! 给出引用 require( [ "esri/Map", "esri/views/MapView", "esri/widgets/Search", &q…
Task这个东西很有用,是AJS中用于解决各种乱七八糟任务的一个类.它有很多子类,有用于空间分析的,有用于空间查询的,等等. 这篇作为补充学习的第一篇,也是进阶学习的第一篇,我就改个写法. 我将使用思维导图,更好呈现逻辑信息. Task类的继承关系 Task类继承自Accessor类,它又有17个子类.别担心,各取所需,很少能用上超过5个子类的AJS程序,除非是一个超大的AJS集成系统. 以上有我熟知的QueryTask.RouteTask.FindTask.Geoprocessor.Ident…
终于到最后一篇了,可喜可贺. 本例先说明了如何进行单点的高程差分析,然后说明了道路的起伏分析.前者很直观地比较了两个年份的高程数据之间的差值,体现山区的高程变化(有啥用啊?)后者,一条路上的起点终点起伏多少,可以给驾驶导航提供更多样化的数据. 本例使用了高程图层和RouteTask. 本例对应的官方例子是:Query Elevation (Points)和Query Elevation (Lines) 1. 点高程差查询 1.1 结果显示 选了一个明显的点,绿色的是地形变化前的高程点,红色的球是…
ESRI官网悄无声息突然更新4.4和3.21,公众号也没有什么消息.照例,给大家看看这次更新有什么新特性吧. 1. AJS 4.4 官方更新日志:点我,比较详细.我在这里抽一些主干作为说明. 1.1 支持更强大的WebMap 为了支持更强大的WebMap,官方开发了三个新的图层:WMSLayer.WMTSLayer.MapNotesLayer. 这就意味着,WebMap已经能用4.XAPI进行读取了,ArcGIS Online和Portal上的数据可以被大量使用. 还没支持的功能:WFS.KML…
这是个很有意思的例子,不过例子给的比较复杂,需要查很多API,我会在文章最后给出关键的类和属性解释. 同样发现一个很有意思的事儿:博客园似乎有爬虫,我4号发布的blogs,5号就在百度和google搜索页面上看到了转载或者复制. 这篇文章逻辑组织不太好,想知道怎么做缩放动画的可以直接拉到尾部看结论. 当然,这篇代码比较多,不建议手机看. 进入正题,goTo()动画,官方的例子是在SceneView中实现的. 照例,给出require的第一个字符串数组参数 require( [ "esri/Map…
本例子核心:对MapView对象的map属性值进行替换即可达到更改地图数据的效果. 这个例子用的不是Map对象了,而是用的发布在服务器上的专题地图(WebMap)来加载到MapView上进行显示. 在html标签中,使用了section标签,不过没什么稀奇的,就把仨按钮放一块而已. 先给出预览图 三张专题地图:失踪人口密度分布.难民迁徙路线.2015年欧洲来港者. 这个东西很有用,尤其是在展示同一地区的专题地图的时候,这里也展示了什么叫View,什么叫Map. 因为中心点.比例尺是由View对象…
这几个例子是第二章除了入门之外比较简单的几个,就做个合集,把最核心的代码(第二参数)和 引用放上来即可,不作多解释. 2D地图添加指北针widget 2D地图一般修正方向为正北方就需要这个widget. 引用: [ "esri/Map", "esri/views/MapView", "esri/widgets/Compass", "dojo/domReady!" ] 在function(Map,MapView,Compass)…
看本文前最好对第二章(Mapping and Views)中的Map和View类有理解. 视图类有一个属性是Popup类型的popup,查阅API知道这个就是视图的弹窗,每一个View的实例都有一个popup. 这个popup属性在View对象实例化的时候就实例化了的,即随着View的出生,它也会出生,它拥有默认的样子,它显示的文字也是默认的样式. 我们看看Popup这个类: 直接继承自Accessor,位于widgets模块下,说明Popup(弹窗)也是小部件的一种.但是为什么要单独拿出来讲呢…
上一篇文章中讲到Popup是一个弹窗,是View对象的默认内置弹窗,并且在View对象构造时就顺便构造了. 那么这个PopupTemplate是什么呢? 后半截单词Template是"模板"的意思,我最初理解就是可以定制的弹窗.仔细阅读API ref后给出更为准确的定义: PopupTemplate是一个针对Layer和Graphic的弹窗,它与Popup最大的不同的是作用对象不同(Popup主要是针对View).它服务的对象是Layer中的要素类或者Graphic,它能从要素中获取字…
这一节我们来看看弹窗的位置和弹窗上能放什么. 先一句话总结: 位置:可以随便(点击时出现或者一直固定在某个位置),也可以指定位置 能放什么:四种,文字.媒体(图片等).表格.附件. [Part I 位置] 这一例子和下一个例子中,CDN的引用多了一行 <link rel="stylesheet" href="https://js.arcgis.com/4.2/esri/css/main.css"> <link rel="styleshee…
上一篇写道,使用Query类进行查询featureLayer图层的要素,也简单介绍了QueryTask类的使用. 这一篇博文继续推进,使用Query类和QueryTask类进行空间查询,查询USA的著名山体点要素. 同样的,只介绍重点.本章官方名字是:Query using QueryTask 照常,先看看结果:(默认三个参数都不动,直接点击按钮) 出现了绿色的圆锥体,点击圆锥体可以出现定制好的弹窗(PopupTemplate): 好,开始上课. 给出引用 require([ "esri/Map…
从第一篇到现在都是基于地图的,不管怎么样,不管是2D还是3D,至少有个图. 这次来个没有图的例子,看看纯文字的空间查询是什么样的. 本例适用于后台查询或低性能电脑的查询. 预览图 由于4.3和4.2的这个例子没有任何实质性的改动,我直接从官方运行的4.3的例子: 默认打开的时候,按下Find按钮,右边就会出现转圈圈的图,其实是个GIF图片. 结果如上,将Spokane这个County的信息列举出来了,列出的字段有County Name.State.Population(2012).%Popula…
好吧,我都要吐了. 接连三个例子都是类似的套路,使用某个查询参数类的实例,结合对应的Task类,对返回值进行取值.显示. 这个例子是Identify识别,使用了TileLayer这种图层,数据来自Server的MapServer. 结果演示 戳不同的地方会有不同的识别结果. 我对TileLayer不是很了解,这一例仅针对有了解的同学,做一个IdentifyTask的解释. IdentifyTask/IdentifyParameter/IdentifyResult三个类 既然是一样的套路,那么先对…
目录如下: 连接:第二章 Mapping and Views 根据本人体会, [这一章节主要是介绍地图(Map)和视图(View)的.] 其中,Get started with MapView(2D)和 Get started with SceneView(3D)两节介绍了如何加载ESRI服务器或者开源的地图和视图.这两节介绍了很重要的概念:Map和View,Map即地理数据,而View代表视图. View主要有两种,MapView和SceneView,前者是2D的,而后者是3D的,区别就是投影…
3D地图又叫场景. 由上一篇可知, require入口函数的第一个参数是字符串数组 ["esri/Map", "esri/views/MapView", "dojo/domReady!"] 这里,MapView就是2D的地图视图. 所以,将2D地图改为3D地图,其实很简单,只需要把这个字符串数组的第二个引用改为"esri/views/SceneView" 然后在第二个参数中修改对应的view代码即可. 下面给出第二个参数(函数…
先看结果截图吧(不看过程可以直接看总结,在文末): 随便点击了两个城市斑块,出现结果如图. 我来解读一下这结果和以前的有什么不同: 这个例子使用了PopupTemplate,数据是Layer(使用PortalID创建的Layer). 但是我们看到图中有个地方不同:当Percent change is这个东西是负数的时候,就是红色+红色下箭头,反之则是绿色字+绿色上箭头. 实际上,这两个箭头是两个png图片. 见html同目录下的两个文件: 所以说,这种特定格式,能随着数字正负自动判断使用什么图片…
空间分析和空间查询是WebGIS有别于其他Web平台的特点.到这一章,就开始步入空间分析的内容了. [Search widget] 介绍空间查询的核心小部件"Search". [Search widget with multiple sources] 在多种信息源中进行空间搜索. [Query features from a FeatureLayer] 这个是在要素图层中进行查询.注意,查询(Query)和搜索(Search)的区别. (其实我也不是很清楚这个的界限) 感觉查询就是在地…
这个例子很简单,作为开学后(暴露出学生党的本质)的开胃菜是再合适不过了. 不过,博主提前警告一下:接下来的例子会相当的长.烦.难.我还会用"引用"-"函数参数骨架"-"逐级分解代码"的模式,从上往下解读一些更难的AJS代码. 现在上课! 空间查询,是GIS的一个重头戏,除了基础定义(坐标系统.投影.符号等).数据准备外,紧接着就是空间查询和下一章的空间分析. 对于AJS的小部件,我们已经接触了两个了,如2D地图中的指北针和上一章的弹窗(Popup…
想知道可视域分析是什么,就得知道可视域是什么 我们站在某个地方,原地不动转一圈能看到的所有事物就叫可视域.当然平地就没什么所谓的可视域. 如果在山区呢?可视范围就会被山体挡住了.这个分析对军事上有十分重要的意义. 在本例中,可视域是以GraphicLayer中的Graphics[]形式存在的. 这个例子用到了Geoprocessor这个类.这个类的对象是如何判别我要进行可视域分析呢?且听我慢慢道来. 看看结果 点击山谷的位置,出现一个红点,稍等10s左右,出现橙色的面块,橙色的面块就是红点位置所…
这个就颇有插值分析的样子了.也可以说是密度分析.做出来就是一个热力地图的样子. 比如,人口密度,降雨分布等.这都可以由这个例子做出来类似的. 由于上一篇已经介绍过Geoprocessor类和ParameterValue类了,所以这节就略去这些内容.想知道的同学可以点击这里,看上一篇相关内容. 与上一节不同的是,使用的不是execute()方法了,而是submitJob()方法,这是一个异步操作方法.尽管他们返回的类型是类似的. 官方给的解释很简洁明了,有了前几个的基础几乎可以瞬间抓住重点,如su…
今天"ArcGIS极客说"公众号推送了这两个大版本的更新,吓得我赶紧撸了一篇新博客. 这里就不写代码验证了,作为新特性小节简单介绍一下!~ AJS 4.3 1. 更强大的FeatureLayer 在4.3版本之前,FeatureLayer的绘制能力有限.在4.3版本中,2D的绘制和查询能力得到了很大的改进,缩短了请求和绘制的时间,绘制的时候会首先绘制地图中心的要素.下面示例加载的webmap中,加载了超过30000个邮政编码信息,感兴趣的可以访问在线地址:点我(在Layer章节) 在4…