《点线面空间分析实现代码(2021年整理)》由会员分享,可在线阅读,更多相关《点线面空间分析实现代码(2021年整理)(35页珍藏版)》请在金锄头文库上搜索。
1、点线面缓充区分析的实现代码 1.ArcGIS.Server.9.3 和ArcGIS API for JavaScript 实现实现点、线、面的buffer 分析,这里是通过 GeometryServer 实现。 准备工作: 在ArcGis Server9.3 中发布名为usa 的MapServer。 在ArcGis Server9.3 中发布名为Geometry 的GeometryServer。 完成后的效果图,开始 关于 GeometryServer 的介绍,可以看本系列的第九篇。 启动 vs 新建名为BufferSample 的ASP.NET Web 应用程序。其实jsapi 是纯客户端的
2、开发了不需 要 vs 也不需要.net 了,纯html 页面就可以了用记事本都可以开发了。我这里为了方便了就用 vs2008 了, 毕竟可以调试js 脚本了。 接着在工程中添加名为 javascript 的文件夹并且在这个文件夹里新建wabapp.js 的文件,这里用来 编写我们自己的js 代码了,在 Default.aspx 页面里添加对这个js 文件的引用,同时在 Default.aspx 页面里 添加一个 id 为map 的div 标签作为地图控件的载体、5 个input 的功能按钮、2 个input 的输入框、1 个 select 选择列表: Untitled Page #Text1,
3、1,2,width: 54px; ”dd,3,3、上面的html 代码中主要可以看一下 5 个input 按钮的onclick 事件,分别实现了画点、画线、画 面、漫游、清楚图形的代码很简单了,还有就是单位选择的select 了已经添加了 7 个常用的单位。 4、切换到wabapp.js 编写js 代码,本例子的js 代码分为 3 部分功能,第一载入地图进行显示;第 二进行画点、线、面操作;第三根据画的点、线、面图形进行buffer 分析。具体的说明看代码注释: dojo.require(“esri.map“); dojo.require(“esri.tasks.geometry“); doj
4、o.require(“esri.toolbars.draw“); dojo.require(“esri.tasks.query“); djConfig = isDebug:true ; var map,tb,geometryService,queryTask,query; function init() startExtent = new esri.geometry.Extent(-183.780014745329,16.2975638854873,-61.406854741 0964,74.0304580085983, new esri.SpatialReference(wkid:4269)
5、; map = new esri.Map(“map“); /底图 Tile 图 var imageryPrime = new esri.layers.ArcGISTiledMapServiceLayer(“http:/server.arcgisonline.co m/ArcGIS/rest/services/NGS_Topo_US_2D/MapServer“); map.addLayer(imageryPrime,var usa = new esri.layers.ArcGISDynamicMapServiceLayer(“http:/jh-53a435fbc0e8/ArcGIS/rest/
6、services/USA/MapServer“); /设置要显示的图层 /usa.setVisibleLayers(0); /设置图层透明度 usa.setOpacity(0.8,4,map.addLayer(usa); /设置地图视图范围 map.setExtent(startExtent); geometryService = new esri.tasks.GeometryService(“http:/jh-53a435fbc0e8/ArcGIS/rest/service s/Geometry/GeometryServer“); tb = new esri.toolbars.Draw(ma
7、p); dojo.connect(tb, “onDrawEnd“, doDraw); /画图 function doDraw(geometry) /根据图形的类型定义显示样式 switch (geometry.type) case “point“: var symbol = new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STY LE_SQUARE, 10, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, n
8、ew dojo.Color(255,0,0), 1), new dojo.Color(0,255,0,0.25); break; case “polyline“: var symbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_D ASH, new dojo.Color(255,0,0), 1); break; case “polygon“: var symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STY
9、LE_SO LID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color (0,0,0), 1), new dojo.Color(255,0,0,0.25); break; /把绘制的图形添加到 map.graphics 进行显示 var graphic = new esri.Graphic(geometry, symbol); map.graphics.add(graphic,5,如果是面需要先进行 simplify 操作,否则直接进行buffer if(geome
10、try.type = “polygon“) geometryService.simplify(graphic,doSimplify); else doBuffer(graphic); /simplify 结束调用buffer function doSimplify(graphics) doBuffer(graphics); function doBuffer(graphics) /buffer 参数 var params = new esri.tasks.BufferParameters(); /buffer 的范围值,从输入框中获取 params.distances = dojo.byId(
11、distance).value ; /空间参考 params.bufferSpatialReference =new esri.SpatialReference(wkid: dojo.byId(“wkid“).value); /输出结果的空间参考 params.outSpatialReference = map.spatialReference; params.features = graphics; /buffer 的单位,从列表框获取 params.unit = eval(“esri.tasks.BufferParameters.“+dojo.byId(“unit“).value); /b
12、uffer 操作,6,geometryService.buffer(params,showBuffer); /显示buffer 的结果 function showBuffer(features) var symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,n ew esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,new dojo.Color(255, 0,0,0.65), 2),new do
13、jo.Color(255,0,0,0.35); for (var j=0;jfeatures.length;j+) var graphic = new esri.Graphic(featuresj.geometry,symbol); map.graphics.add(graphic); tb.deactivate(); map.showZoomSlider(,dojo.addOnLoad(init); 5、这样就完成了buffer 的例子,标签:arcgis api javasrcipt、arcgis server 9.3、buffer 149 Views | 1 条评论 ArcGIS.Ser
14、ver.9.3 和ArcGIS API for JavaScript 保存自定义图形(十) 2009 年 09 月 10 日 10:01 上午 | 分类:JavaScript 目的: 1.ArcGIS.Server.9.3 和ArcGIS API for JavaScript 实现自定义图形,保存自定义的Graphic 图形到 服务端的xml 文件中,同时也能在地图载入时读入xml 中的图形数据显示到地图中。 这里的自定义面的 Label 是通过GeometryServer 的labelPoints 实现的。 准备工作: 1. 在ArcGis Server9.3 中发布名为Geometry 的
15、GeometryServer。 完成后的效果图,7,开始 关于 GeometryServer 的labelPoints 介绍,labelPoints 允许在多边形中指定Label 显示的位置点, 是jsapi1.2 才支持的新功能,需要需要ArcGIS Server 9.3 sp1 支持。 启动 vs 新建名为SaveGraphics 的ASP.NET Web 应用程序。 接着在工程中添加名为 javascript 的文件夹并且在这个文件夹里新建mapfunc.js 的文件,这里用来 编写我们自己的js 代码了,在 Default.aspx 页面里添加对这个js 文件的引用,同时在 Default.aspx 页面里 添加一个 id 为map 的div 标签作为地图控件的载体、2 个input 的功能按钮: Untitled Page import ”http:/ emes/tundra/tundra.css”;,