ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx

上传人:b****4 文档编号:7003611 上传时间:2023-05-10 格式:DOCX 页数:36 大小:222.80KB
下载 相关 举报
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第1页
第1页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第2页
第2页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第3页
第3页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第4页
第4页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第5页
第5页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第6页
第6页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第7页
第7页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第8页
第8页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第9页
第9页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第10页
第10页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第11页
第11页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第12页
第12页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第13页
第13页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第14页
第14页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第15页
第15页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第16页
第16页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第17页
第17页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第18页
第18页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第19页
第19页 / 共36页
ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx

《ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx》由会员分享,可在线阅读,更多相关《ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx(36页珍藏版)》请在冰点文库上搜索。

ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析.docx

ArcGIS1Server和ArcGISAPIforJavaScript实现点线面的buffer分析

ArcGIS.Server.9.3和ArcGISAPIforJavaScript实现点、线、面的buffer分析

 

目的:

1.ArcGIS.Server.9.3和ArcGISAPIforJavaScript实现实现点、线、面的buffer分析,这里是通过GeometryServer实现。

准备工作:

1.在ArcGisServer9.3中发布名为usa的MapServer。

2.在ArcGisServer9.3中发布名为Geometry的GeometryServer。

完成后的效果图:

 

开始

0.关于GeometryServer的介绍,可以看本系列的第九篇。

1.启动vs新建名为BufferSample的ASP.NETWeb应用程序。

其实jsapi是纯客户端的开发了不需要vs也不需要.net了,纯html页面就可以了用记事本都可以开发了。

我这里为了方便了就用vs2008了,毕竟可以调试js脚本了。

2.接着在工程中添加名为javascript的文件夹并且在这个文件夹里新建wabapp.js的文件,这里用来编写我们自己的js代码了,在Default.aspx页面里添加对这个js文件的引用,同时在Default.aspx页面里添加一个id为map的div标签作为地图控件的载体、5个input的功能按钮、2个input的输入框、1个select选择列表:

<%@ Page Language=“C#“ AutoEventWireup=“true“ CodeBehind=“Default.aspx.cs“ Inherits=“BufferSample._Default“ %>

DOCTYPE html PUBLIC ”-//W3C//DTD XHTML 1.0 Transitional//EN” ”http:

//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

//www.w3.org/1999/xhtml” >

    Untitled Page

    

    

    

    

        #Text1

        {

            width:

 54px;

        }

    

    

    

    

    

dd

    

         

         

         

          

         WKID:

40px” type=”text” value=”102113″ />Buffer距离:

40px” type=”text” value=”25″ />

        

        英里

    

    千米

    

    海里

    美式海里

    

        

        

550px; height:

400px; border:

1px solid #000;”>

    

    

    

3、上面的html代码中主要可以看一下5个input按钮的onclick事件,分别实现了画点、画线、画面、漫游、清楚图形的代码很简单了,还有就是单位选择的select了已经添加了7个常用的单位。

4、切换到wabapp.js编写js代码,本例子的js代码分为3部分功能,第一载入地图进行显示;第二进行画点、线、面操作;第三根据画的点、线、面图形进行buffer分析。

具体的说明看代码注释:

dojo.require(“esri.map“);

dojo.require(“esri.tasks.geometry“);

dojo.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.4068547410964,74.0304580085983, new esri.SpatialReference({wkid:

4269}));

   map = new esri.Map(“map“);

   //底图Tile图

   var imageryPrime = new esri.layers.ArcGISTiledMapServiceLayer(“

   map.addLayer(imageryPrime);

   

   var usa = new esri.layers.ArcGISDynamicMapServiceLayer(“http:

//jh-53a435fbc0e8/ArcGIS/rest/services/USA/MapServer“);

   //设置要显示的图层

   //usa.setVisibleLayers([0]);

   //设置图层透明度

   usa.setOpacity(0.8);

   map.addLayer(usa);

   //设置地图视图范围

   map.setExtent(startExtent);

   geometryService = new esri.tasks.GeometryService(“http:

//jh-53a435fbc0e8/ArcGIS/rest/services/Geometry/GeometryServer“);

   tb = new esri.toolbars.Draw(map);

   dojo.connect(tb, “onDrawEnd“, doDraw);

}

//画图

function doDraw(geometry)

{

   //根据图形的类型定义显示样式

   switch (geometry.type)

   {

      case “point“:

          var symbol = new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_SQUARE, 10, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new 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_DASH, new dojo.Color([255,0,0]), 1);

           break;

      case “polygon“:

           var symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, 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);

   

   //如果是面需要先进行simplify操作,否则直接进行buffer

   if(geometry.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("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);

   //buffer操作

   geometryService.buffer(params,showBuffer);

}

//显示buffer的结果

function showBuffer(features)

{

   var symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,new dojo.Color([255,0,0,0.65]), 2),new dojo.Color([255,0,0,0.35]));

   for (var j=0;j

   {

      var graphic = new esri.Graphic(features[j].geometry,symbol);

      map.graphics.add(graphic);

   }

   tb.deactivate();

   map.showZoomSlider();

   

}

dojo.addOnLoad(init);

5、这样就完成了buffer的例子。

 

 

标签:

arcgisapijavasrcipt、arcgisserver9.3、buffer149Views  |  1条评论

ArcGIS.Server.9.3和ArcGISAPIforJavaScript保存自定义图形(十)

2009年09月10日10:

01上午  |  分类:

JavaScript

目的:

1.ArcGIS.Server.9.3和ArcGISAPIforJavaScript实现自定义图形,保存自定义的Graphic图形到服务端的xml文件中,同时也能在地图载入时读入xml中的图形数据显示到地图中。

这里的自定义面的Label是通过GeometryServer的labelPoints实现的。

准备工作:

1.在ArcGisServer9.3中发布名为Geometry的GeometryServer。

完成后的效果图:

开始

0.关于GeometryServer的labelPoints介绍,labelPoints允许在多边形中指定Label显示的位置点,是jsapi1.2才支持的新功能,需要需要ArcGISServer9.3sp1支持。

1.启动vs新建名为SaveGraphics的ASP.NETWeb应用程序。

2.接着在工程中添加名为javascript的文件夹并且在这个文件夹里新建mapfunc.js的文件,这里用来编写我们自己的js代码了,在Default.aspx页面里添加对这个js文件的引用,同时在Default.aspx页面里添加一个id为map的div标签作为地图控件的载体、2个input的功能按钮:

<%@ Page Language=“C#“ AutoEventWireup=“true“ CodeBehind=“saveGraphic.aspx.cs“ Inherits=“LabelingSample.saveGraphic“ %>

DOCTYPE html PUBLIC ”-//W3C//DTD XHTML 1.0 Transitional//EN” ”http:

//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

//www.w3.org/1999/xhtml” >

    Untitled Page

    @import ”

    

    

     

    

    

      

    

    

600px; height:

450px; border:

1px solid #000;”>

    

3、上面的html代码很简单主要是2个input的画图、漫游功能按钮。

4、切换到mapfunc.js开始编写js代码,现在从执行顺序来说明代码。

5、首先是初始化地图显示的init()方法:

function init()

{

   map = new esri.Map(“map“,{extent:

 new esri.geometry.Extent(-183.780014745329, 16.2975638854873,-61.4068547410964, 74.0304580085983, new esri.SpatialReference({wkid:

4269}))}); 

   var usamap = new esri.layers.ArcGISTiledMapServiceLayer(“

   map.addLayer(usamap);

   toolbar = new esri.toolbars.Draw(map);

   dojo.connect(toolbar, “onDrawEnd“, doDraw);

   //添加map载入后事件监听,用来从xml中读入自定义的图形在地图上显示

   dojo.connect(map,“onLoad“,showGraphic);

   //设置infoWindow的大小

   map.infoWindow.resize(200, 100);

   //设置infoWindow的标题头

   map.infoWindow.setTitle(“输入名称“);

   //实例化GeometryService

   geometryService = new esri.tasks.GeometryService(“http:

//mypc/ArcGIS/rest/services/Geometry/GeometryServer“);

}

6、上面的init()方法中执行了dojo.connect(map,”onLoad”,showGraphic);代码,所以接下来是showGraphic()方法代码:

//map载入后事件监听,用来从xml中读入自定义的图形在地图上显示

function showGraphic()

{

   //延迟1秒执行

   setTimeout(loadGraphic,1000); 

}

7、上面的showGraphic()方法调用了loadGraphic()方法,这样方法中用了dojo的ajax功能向服务端请求获取服务端的xmlData/xmlGraphic.xml数据,关于dojo.xhrGet方法可以参考dojo的帮助,这里首先来看一下xmlGraphic.xml中保存的数据,如下:

  

xml version=”1.0″ encoding=”gb2312″ ?

  {“geometry”:

{“rings”:

[[[-107.3883566182127,25.740182822042797],[-112.9254659932127,25.828073447042797],[-115.7379659932127,31.189401572042797],[-110.8160909932127,31.540964072042797],[-105.5426534932127,28.904245322042797],[-107.3883566182127,25.740182822042797]]],”spatialReference”:

{“

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2