﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-小秋的家-文章分类-GIS</title><link>http://www.blogjava.net/mycolby/category/29279.html</link><description>home</description><language>zh-cn</language><lastBuildDate>Fri, 01 Jan 2010 07:40:38 GMT</lastBuildDate><pubDate>Fri, 01 Jan 2010 07:40:38 GMT</pubDate><ttl>60</ttl><item><title>Arcgis server 9.2 无法登录ArcGIS Manager 提示Incorrect Login Information </title><link>http://www.blogjava.net/mycolby/articles/307946.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Thu, 31 Dec 2009 13:28:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/307946.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/307946.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/307946.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/307946.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/307946.html</trackback:ping><description><![CDATA[Arcgis server 9.2 无法登录ArcGIS Manager 提示Incorrect Login Information 操作系统windows xp
<p>解决办法：</p>
<p>打开资源管理器，工具菜单－&gt;文件夹选项－&gt;查看，去掉里面的简单文件共享.</p>
<p>如果还不行就从控制面板关闭window防火墙</p>
<img src ="http://www.blogjava.net/mycolby/aggbug/307946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2009-12-31 21:28 <a href="http://www.blogjava.net/mycolby/articles/307946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从ArcIMS 到 ArcGIS Server Javascript API 开发</title><link>http://www.blogjava.net/mycolby/articles/303664.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Wed, 25 Nov 2009 09:30:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/303664.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/303664.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/303664.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/303664.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/303664.html</trackback:ping><description><![CDATA[<p>1、为什么是ArcGIS server REST</p>
<p>&nbsp; 下面的两幅图分别描述了ArcIMS 和ArcGIS server REST的是请求机制</p>
<p>&nbsp; ArcIMS&nbsp;</p>
<p>&nbsp;<img class="" id="aimg_85160" onclick="zoom(this, this.src)" alt="image001.png" src="http://www.gissky.net/Article/UploadFiles/200909/20090910215115522.png" width="600" unselectable="true" h="399" w="600" outfunc="null" initialized="true" status="2" file="attachments/forumid_14/090803115342c7a5f2a5c4b13f.png" x="415" y="928" /></p>
<p>&nbsp; ArcGIS server REST</p>
<p><img class="" id="aimg_85161" onclick="zoom(this, this.src)" alt="image003.png" src="http://www.gissky.net/Article/UploadFiles/200909/20090910215115855.png" width="600" unselectable="true" h="387" w="600" outfunc="null" initialized="true" status="2" file="attachments/forumid_14/09080311538dfb36e7d46a1793.png" x="415" y="1432" />&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从图中的我们可以清晰地看出，如果把黄色虚线内看成是黑箱的话，其两种服务采用完全一样的结构（Webservice) 。 不同之处在于ArcIMS 应用发送的是ArcXML 接收的是 ArcXML ,而ArcGIS server REST 应用发送的是GET (POST)请求 接收的是 JSON。在之前 我们就说过 ArcIMS之所以广受用户的好评，就是因为其架构优秀，逻辑清晰，开发方便，而ArcGIS server REST 也秉承了这个优点，其架构也是这种发送请求 接受结果的模式，不但结构清晰也利于开发者的开发调试。通过对其发送接受请求的分析能使我们更清楚地认识这点。</p>
<p>应用向ArcIMS的发送请求&nbsp;&nbsp; （getFeatures)</p>
<p><img class="" id="aimg_85162" onclick="zoom(this, this.src)" alt="image005.png" src="http://www.gissky.net/Article/UploadFiles/200909/20090910215116629.png" width="600" unselectable="true" h="201" w="600" outfunc="null" initialized="true" status="2" file="attachments/forumid_14/0908031153a11599ee2bea2bee.png" x="415" y="2056" />&nbsp;</p>
<p>&nbsp;&nbsp; 上面一个就是在ArcIMS里发送的查询请求，请求是在cities图层中查询名称是San diego的地图要素。而下面的Axl就是ArcIMS接受到请求返回的查询结果。</p>
<p><img class="" id="aimg_85163" onclick="zoom(this, this.src)" alt="image007.png" src="http://www.gissky.net/Article/UploadFiles/200909/20090910215116376.png" width="600" unselectable="true" h="270" w="600" outfunc="null" initialized="true" status="2" file="attachments/forumid_14/0908031153c3ab6a618210c373.png" x="415" y="2364" />&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 从中我们可以看出San Diego地图要素的一些信息</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 下面这个请求是应用向ArcGIS server REST的发送请求 （getFeatures)</p>
<p><img class="" id="aimg_85164" onclick="zoom(this, this.src)" alt="image009.png" src="http://www.gissky.net/Article/UploadFiles/200909/20090910215116609.png" width="600" unselectable="true" h="115" w="600" outfunc="null" initialized="true" status="2" file="attachments/forumid_14/09080311535a1545454214e6b3.png" x="415" y="2743" /></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不同于向ArcIMS发送的ArcXML 的POST方式，这个请求是通过GET方式发送的字符串，从字符串的参数中我们可以看出，其是向地图服务为USA的第0图层 （cities图层）发送一个请求，查询其 city_NAME=San Diego 的地图要素<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面是ArcGIS server REST接受到请求后返回的查询结果。</p>
<p>&nbsp;<img class="" id="aimg_85165" onclick="zoom(this, this.src)" alt="image011.png" src="http://www.gissky.net/Article/UploadFiles/200909/20090910215117294.png" width="600" unselectable="true" h="199" w="600" outfunc="null" initialized="true" status="2" file="attachments/forumid_14/09080311536350524a74d64c1d.png" x="415" y="3021" /><br />
&nbsp;&nbsp;&nbsp;&nbsp; 从上面可以看出，ArcGIS server REST 和ArcIMS 是如此的相似，都是请求应答模式，而相对于ArcIMS 的 AXL而言ArcGIS server REST的JSON更适于脚本语言的解析（xml在不同浏览器下解析方法有很大区别），而且相同内容JSON比AXL更小，这个在大数据结果返回中是很重要的，不仅仅如此 ArcGIS server REST对于ArcIMS开发人员 而言还具有不需要额外学习AO知识 ，入门迅速，等诸多方面优势。</p>
<p>为什么是 JavaScript ？</p>
<p>&nbsp;&nbsp; 在ArcIMS中使用最多的就是JavaScript开发（其次是java connector~），在很多项目中都是JavaScript做GIS 应用，DotNet或java（J2EE） 作业务逻辑，我相信大多数ArcIMS开发人员对JavaScript开发并不陌生。</p>
<p>JavaScript 的WebGIS 开发大致分为以下的三类：</p>
<p>1、地图的展示， DIV 里 IMG的抽换</p>
<p>2、信息的查询 发送AJAX请求</p>
<p>3、动态信息的地图展示 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于marker&nbsp; pop 就是DIV<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于Graphic 就是 VML/SVG </p>
<p><br />
&nbsp;&nbsp; 下面这个是利用JavaScript向ArcIMS 请求地图的全过程，其中 url为ArcIMS服务器servlet connector的地址，axl 为发送的getmap 请求。</p>
<p><img class="" id="aimg_85166" onclick="zoom(this, this.src)" alt="image013.png" src="http://www.gissky.net/Article/UploadFiles/200909/20090910215117163.png" width="600" unselectable="true" h="404" w="600" outfunc="null" initialized="true" status="2" file="attachments/forumid_14/0908031153d63f4931614774ee.png" x="415" y="3751" />&nbsp;</p>
<p>&nbsp; 其步骤：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、客户端JavaScript建立xmlhttprequest 通道，向ArcIMS的servlet connector 发送axl请求（黑色JavaScript代码）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、ArcIMS 接受到请求生成图片<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、通过刚才客户端发起建立的xmlhttprequest 通道，ArcIMS发送AXL给客户端，告知生成的地图图片的url<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、客户端JavaScript解析收到的AXL，并告知页面html抽换DIV中的图片指向url（紫色代码）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5、页面通过新的url地址取到ArcIMS刚才生成的地图图片，展示给客户。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; 相对于ArcIMS而言 ArcGIS server REST地图请求更为简单，如下图</p>
<p><img class="" id="aimg_85159" onclick="zoom(this, this.src)" alt="image015.png" src="http://www.gissky.net/Article/UploadFiles/200909/20090910215118602.png" width="600" unselectable="true" h="436" w="600" outfunc="null" initialized="true" status="2" file="attachments/forumid_14/0908031153db950495df7ee0f2.png" x="415" y="4466" /><br />
&nbsp; 其步骤：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、利用JavaScript拼接请求的url串，传给html<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、页面请求url<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、ArcGIS server REST 接受这个URL 生成地图图片以流的方式传给页面<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、页面展示地图图片给用户<br />
二<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以上的Javascript代码没有用到任何API，其主要目的就是向大家说明，在有强大的服务端支持（ArcIMS/ArcGIS server REST）下利用JavaScript开发WebGIS 应用是一件多么惬意的事情。而且 不要忘了,我们还有封装大量要素的Javascript API ! <br />
本篇文章来源于 GIS空间站 转载请以链接形式注明出处 网址：http://www.gissky.net/Article/1701.htm</p>
<img src ="http://www.blogjava.net/mycolby/aggbug/303664.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2009-11-25 17:30 <a href="http://www.blogjava.net/mycolby/articles/303664.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ArcGis server 调用Javascript API实现与后台的参数传递</title><link>http://www.blogjava.net/mycolby/articles/303647.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Wed, 25 Nov 2009 07:58:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/303647.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/303647.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/303647.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/303647.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/303647.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
1.在页面端，首先撰写自定义的javascript方法，有了这个方法，就可以在前端页面的任何地方去触发地图事件了：<br />
<br />
function test(str){<br />
<br />
&nbsp;&nbsp;&nbsp; //需要传递到后台的自定义参数<br />
<br />
&nbsp;&nbsp;&nbsp; var str1=encodeURI(encodeURI(str));<br />
<br />
<br />
&nbsp;&nbsp;&nbsp; //&#8220;mapForm&#8221;是地图页面上的表单名，从该表单获取向后台提交的URL<br />
<br />
&nbsp;&nbsp;&nbsp; var url = EsriUtils.getServerUrl("mapForm");<br />
<br />
<br />
<br />
&nbsp;&nbsp;&nbsp; //&#8220;map1&#8221;是地图页面上的地图ID<br />
<br />
&nbsp;&nbsp;&nbsp; var map = EsriControls.maps["map1"];<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义需要传递的参数列表，最后的&#8220;EsriUtils.buildRequestParams(map.formId)&#8221;为固定写法<br />
<br />
&nbsp;&nbsp;&nbsp; var params = "addpointInt=addpointInt";//这个参数用来在后台判断当前应该做什么操作，从而决定调用哪个处理类，参数名和值都是自定义的<br />
<br />
&nbsp;&nbsp;&nbsp; params += " &amp;mapId=map1 ";//地图的ID<br />
<br />
&nbsp;&nbsp;&nbsp; params += " &amp;str="+str1;//自定义的参数<br />
<br />
&nbsp;&nbsp;&nbsp; params += " &amp;"+EsriUtils.buildRequestParams(map.formId);//固定写法<br />
<br />
&nbsp; &nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp; //调用sendAjaxRequest方法，发送请求，其中的function(){testCallBack(xmlHttp);}为回调方法<br />
<br />
&nbsp;&nbsp;&nbsp; var xmlHttp = EsriUtils.sendAjaxRequest(url,params,true,function(){testCallBack(xmlHttp);}); <br />
<br />
}<br />
<br />
<br />
2.然后是相关的回调方法，回调方法就可以根据自己的需要随意进行操作了，这只是非常普通的AJAX回调方法<br />
<br />
function testCallBack(xmlHttp){<br />
<br />
&nbsp;&nbsp;&nbsp; if (xmlHttp != null &amp;&amp; xmlHttp.readyState == 4 &amp;&amp; xmlHttp.status == 200) {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var xml = xmlHttp.responseXML;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var map = EsriControls.maps["map1"];<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // map.refresh();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // alert("run here");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map.resize(map.bounds.width, map.bounds.height);<br />
<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
}<br />
<br />
<br />
3.然后是撰写后台程序，用以捕捉前台所触发的AJAX事件。这是一个listener，需要实现接口javax.faces.event.PhaseListener：<br />
<br />
&nbsp;<br />
<br />
import java.util.Map;<br />
<br />
&nbsp;<br />
<br />
import javax.faces.context.ExternalContext;<br />
<br />
import javax.faces.context.FacesContext;<br />
<br />
import javax.faces.event.PhaseEvent;<br />
<br />
import javax.faces.event.PhaseId;<br />
<br />
import javax.faces.event.PhaseListener;<br />
<br />
&nbsp;<br />
<br />
public class SelfPhaseListener implements PhaseListener {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //////////////////////////////ajax处理代码<br />
<br />
&nbsp;&nbsp;&nbsp; public PhaseId getPhaseId() {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated method stub<br />
<br />
&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //这里表示在应用请求值阶段进行处理<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return PhaseId.APPLY_REQUEST_VALUES;//.APPLY_REQUEST_VALUES;//选择action的回调处理过程<br />
<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp; public void afterPhase(PhaseEvent phaseEvent) {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //从FacesContext中获得由前端javascript方法传递来的参数列表<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FacesContext facesContext = phaseEvent.getFacesContext();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ExternalContext externalContext = facesContext.getExternalContext();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Map paramMap = externalContext.getRequestParameterMap();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //这里判断是不是我们需要的请求,如果不是直接返回。这个&#8220;addpointInt&#8221;即是先前所定义的javasctipt方法中的一个参数<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if("addpointInt".equals((String) paramMap.get("addpointInt"))){<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //这个AddPointPhaseListener类就是自定义的用来进行后台处理的类<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddPointPhaseListener addpoint=new AddPointPhaseListener();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; addpoint.excute(paramMap, facesContext);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;<br />
<br />
&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp; @Override<br />
<br />
&nbsp;&nbsp;&nbsp; public void beforePhase(PhaseEvent arg0) {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated method stub<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
}<br />
<br />
<br />
4.接下来写一个用来处理具体业务的类：<br />
<br />
import java.util.Map;<br />
<br />
&nbsp;<br />
<br />
import javax.faces.component.UIComponent;<br />
<br />
import javax.faces.context.FacesContext;<br />
<br />
&nbsp;<br />
<br />
import org.w3c.dom.Document;<br />
<br />
import org.w3c.dom.Element;<br />
<br />
&nbsp;<br />
<br />
import com.esri.adf.web.data.TocFunctionality;<br />
<br />
import com.esri.adf.web.data.WebContext;<br />
<br />
import com.esri.adf.web.data.WebMap;<br />
<br />
import com.esri.adf.web.faces.component.MapControl;<br />
<br />
import com.esri.adf.web.faces.renderkit.xml.ajax.AJAXUtil;<br />
<br />
import com.esri.adf.web.util.XMLUtil;<br />
<br />
&nbsp;<br />
<br />
public class AddPointPhaseListener {<br />
<br />
&nbsp;&nbsp;&nbsp; @SuppressWarnings("deprecation")<br />
<br />
&nbsp;&nbsp;&nbsp; public void excute(Map paramMap,FacesContext facesContext) {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //get form element from view。获得页面上的表单对象<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UIComponent form = facesContext.getViewRoot().findComponent((String) paramMap.get("mapForm"));<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(form == null){<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //get map control。获得mapControl<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MapControl mc = (MapControl) form.findComponent((String) paramMap.get("mapId"));<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(mc == null){<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;<br />
<br />
&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //get web map, web context &amp; clear graphics。获得WebMap,WebContext，就可以进行地图操作了<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebMap wm = mc.getWebMap();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebContext wc = wm.getWebContext();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wc.getWebQuery().clearGraphics();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // read information form string of js function<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //获得从页面javasctipt方法传递来的参数列表<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String str=java.net.URLDecoder.decode((String) paramMap.get("str"), "UTF-8");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ///////////////////////<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //如果需要返回的话，像这样用XML的形式返回数据<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //create and populate xml response document<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document doc = XMLUtil.newDocument();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element responseTag = XMLUtil.createElement(doc, "response", null, null);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; responseTag.setAttribute("test", "hello");<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //write response<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AJAXUtil.writeResponse(facesContext, doc);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception e) {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; finally {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; facesContext.responseComplete();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
}<br />
<br />
<br />
<br />
5.最后，需要在faces-context.xml文件中通过注册生命周期的方式，来使以上这些代码生效：<br />
<br />
&lt;!-- MapViewer Phase Listener --&gt;<br />
<br />
&lt;lifecycle&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;!-- 这是默认的listener --&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;phase-listener&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; com.esri.adf.web.templates.MapViewerPhaseListener<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;/phase-listener&gt;<br />
<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;!-- 这是先前自定义的Listener --&gt;<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;phase-listener&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; com.megait.gis.listener.SelfPhaseListener<br />
<br />
&nbsp;&nbsp;&nbsp; &lt;/phase-listener&gt;<br />
<br />
&lt;/lifecycle&gt;<br />
<img src ="http://www.blogjava.net/mycolby/aggbug/303647.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2009-11-25 15:58 <a href="http://www.blogjava.net/mycolby/articles/303647.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ArcGis Server for JAVA 前台JS帮助</title><link>http://www.blogjava.net/mycolby/articles/302250.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Fri, 13 Nov 2009 08:18:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/302250.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/302250.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/302250.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/302250.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/302250.html</trackback:ping><description><![CDATA[<a href="http://edndoc.esri.com/arcobjects/9.2/Java/java/server/web_adf/javascript/clientside_js.html" target="_blank">http://edndoc.esri.com/arcobjects/9.2/Java/java/server/web_adf/javascript/clientside_js.html</a>
<img src ="http://www.blogjava.net/mycolby/aggbug/302250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2009-11-13 16:18 <a href="http://www.blogjava.net/mycolby/articles/302250.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ArcGis Server 自定义Tools开发--获得所有前台参数</title><link>http://www.blogjava.net/mycolby/articles/302249.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Fri, 13 Nov 2009 08:15:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/302249.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/302249.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/302249.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/302249.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/302249.html</trackback:ping><description><![CDATA[<p>package com.Myclass;</p>
<p>import com.esri.adf.web.faces.event.ClientActionArgs;<br />
import com.esri.adf.web.faces.event.MapEvent;<br />
import com.esri.adf.web.faces.event.MapToolAction;<br />
import com.esri.adf.web.data.WebContext;<br />
import com.esri.adf.web.data.query.WebQuery;<br />
import com.esri.adf.web.data.geometry.WebGeometry;<br />
import com.esri.adf.web.ags.data.AGSMapResource;<br />
import com.esri.adf.web.ags.data.AGSMapFunctionality;<br />
import com.esri.arcgisws.MapServerPort;<br />
import com.esri.arcgisws.SpatialFilter;<br />
import com.esri.arcgisws.EsriSearchOrder;<br />
import com.esri.arcgisws.QueryFilter;<br />
import com.esri.arcgisws.EsriSpatialRelEnum;<br />
import com.esri.arcgisws.LayerDescription;<br />
import com.esri.arcgisws.RecordSet;<br />
import com.esri.arcgisws.Record;<br />
import com.esri.adf.web.ags.util.AGSUtil;<br />
import com.esri.arcgisws.PolygonN;</p>
<p><br />
public class QueryPolygon implements MapToolAction //һ��ӿ�<br />
{<br />
&nbsp;private WebContext webContext = null;<br />
&nbsp;private String pMsg ;<br />
&nbsp;public QueryPolygon(){}<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;private void QueryFeature(WebGeometry pWebGeometry)<br />
&nbsp;{<br />
&nbsp;&nbsp;AGSMapResource pAGSMap = (AGSMapResource)webContext.getResources().get("ags1");<br />
&nbsp;&nbsp;MapServerPort pMapServer = pAGSMap.getMapServer();</p>
<p>&nbsp;&nbsp;PolygonN pPolygonN = (PolygonN)AGSUtil.toAGSGeometry(pWebGeometry);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;SpatialFilter spatialFilter = new SpatialFilter();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; spatialFilter.setSpatialRel(EsriSpatialRelEnum.esriSpatialRelIntersects);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; spatialFilter.setWhereClause("");//where<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; spatialFilter.setSearchOrder(EsriSearchOrder.esriSearchOrderSpatial);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; spatialFilter.setSpatialRelDescription("");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; spatialFilter.setGeometryFieldName("");//<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; spatialFilter.setFilterGeometry(pPolygonN);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AGSMapFunctionality pMapFunc = (AGSMapFunctionality)pAGSMap.getFunctionality("map");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LayerDescription[] pLayerDescs = pMapFunc.getLayerDescriptions();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; QueryFilter pFilter = (QueryFilter)spatialFilter;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RecordSet pRSet = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Record[] pRs = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //WebQuery pWebQuery = this.webContext.getWebQuery();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebQuery pWebQuery = (WebQuery)this.webContext.getAttribute("query");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pWebQuery.clearGraphics();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int pLayerCount = pLayerDescs.length;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0; i&lt;pLayerCount;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;LayerDescription pLayerDesc = pLayerDescs[i];<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;if(pLayerDesc.isVisible())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;try<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;{&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; pRSet = pMapServer.queryFeatureData(pMapServer.getDefaultMapName(), i,pFilter);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;catch(Exception pE)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;pRs = pRSet.getRecords();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;int TheLayerQueryCount = pRs.length;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;for(int j=0;j &lt; TheLayerQueryCount;j++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Record pItem = pRs[j];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;int TheItemValuesCount = pItem.getValues().length;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;for(int k=0; k&lt;TheItemValuesCount;k++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;Object pOjb = pItem.getValues()[k];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;if(pOjb instanceof com.esri.arcgisws.Geometry)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WebGeometry pGeo = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pGeo = AGSUtil.fromAGSGeometry((com.esri.arcgisws.Geometry)pOjb);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(Exception pE)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(pE.getMessage());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pWebQuery.addDisplayGeometry(pGeo);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.webContext.refresh();<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public void execute(MapEvent arg0) throws Exception&nbsp;<br />
&nbsp;{&nbsp; <br />
<font color="#ff0000">&nbsp;&nbsp;ClientActionArgs clientarg = arg0.getClientActionArgs();<br />
&nbsp;&nbsp;&nbsp;&nbsp; System.out.println( "---所有参数---" + clientarg.getRequestParameters());<br />
</font>&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;this.webContext = arg0.getWebContext();<br />
&nbsp;&nbsp;WebGeometry pWebGeometry = arg0.getWebGeometry();<br />
&nbsp;&nbsp;pWebGeometry = pWebGeometry.toMapGeometry(arg0.getWebContext().getWebMap());<br />
&nbsp;&nbsp;this.QueryFeature(pWebGeometry);<br />
&nbsp;}<br />
&nbsp;<br />
}<br />
<br />
<br />
转载于: http://leo43.blog.hexun.com/p9/default.aspx</p>
<img src ="http://www.blogjava.net/mycolby/aggbug/302249.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2009-11-13 16:15 <a href="http://www.blogjava.net/mycolby/articles/302249.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ArcGis Server JAVA ADF 实现地图中心点显示(js实现).</title><link>http://www.blogjava.net/mycolby/articles/302248.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Fri, 13 Nov 2009 08:13:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/302248.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/302248.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/302248.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/302248.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/302248.html</trackback:ping><description><![CDATA[&lt;script type="text/javascript"&gt;<br />
function leo(){<br />
&nbsp; var map = EsriControls.maps["map1"];<br />
&nbsp; var formId = map.formId;<br />
&nbsp; var serverUrl = EsriUtils.getServerUrl(formId);<br />
&nbsp; map.centerAt(210,200);//将地图控件区域的210,200作为中心点显示,相当于让地图左移10个单位<br />
&nbsp; map.resize(map.width,map.height);//map对象没有刷新地图的方法,通过这种方式来刷新地图.<br />
}<br />
&lt;/script&gt;<br />
<br />
&lt;a:context value="#{mapContext}" id="c1" /&gt;<br />
&lt;a:map value="#{mapContext.webMap}" id="map1" width='400' height='400'/&gt;<br />
&lt;input type="button" value="按我" onclick="leo()" /&gt;<br />
<br />
转载于: http://leo43.blog.hexun.com/p9/default.aspx
<img src ="http://www.blogjava.net/mycolby/aggbug/302248.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2009-11-13 16:13 <a href="http://www.blogjava.net/mycolby/articles/302248.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ArcGis Server 使用TextCriteria进行文本查询</title><link>http://www.blogjava.net/mycolby/articles/302246.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Fri, 13 Nov 2009 08:12:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/302246.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/302246.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/302246.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/302246.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/302246.html</trackback:ping><description><![CDATA[WebQuery webQuery = (WebQuery) webMap.getWebContext().getAttribute("query");<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; //定义线类型的高亮样式<br />
&nbsp;&nbsp;&nbsp;WebSimpleLineSymbol markers1 = new WebSimpleLineSymbol();<br />
&nbsp;&nbsp;&nbsp;markers1.setAntialiasing(true);<br />
&nbsp;&nbsp;&nbsp;markers1.setColor("255,0,0");<br />
&nbsp;&nbsp;&nbsp;webQuery.setLineGraphicSymbol(markers1);<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; //定义点类型的高亮样式<br />
&nbsp;&nbsp;&nbsp;WebSimpleMarkerSymbol markers2 = new WebSimpleMarkerSymbol();<br />
&nbsp;&nbsp;&nbsp;markers2.setAntialiasing(true);<br />
&nbsp;&nbsp;&nbsp;markers2.setColor("0,255,0");<br />
&nbsp;&nbsp;&nbsp;webQuery.setPointGraphicSymbol(markers2);<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; //定义面类型的高亮样式<br />
&nbsp;&nbsp;&nbsp;WebSimplePolygonSymbol&nbsp; markers3 = new WebSimplePolygonSymbol();<br />
&nbsp;&nbsp;&nbsp;markers3.setAntialiasing(true);<br />
&nbsp;&nbsp;&nbsp;markers3.setColor("0,0,255");<br />
&nbsp;&nbsp;&nbsp;webQuery.setPolygonGraphicSymbol(markers3);<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;List&lt;SelectItem&gt; layers= new ArrayList();
<p>&nbsp;&nbsp;&nbsp;List&lt;WebLayerInfo&gt; layerList = webQuery.getQueryLayers();//获得所有图层信息<br />
&nbsp;&nbsp;&nbsp;WebLayerInfo layerInfo = null;<br />
&nbsp;&nbsp;&nbsp;for(Iterator iter = layerList.iterator(); iter.hasNext(); ) {<br />
&nbsp;&nbsp;&nbsp;Object item = (Object) iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(item <font color="#0000ff">instanceof</font> WebLayerInfo){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layerInfo = (WebLayerInfo)item;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; layers.add(new SelectItem(layerInfo, layerInfo.getName()));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(layerInfo.getName());//图层名字,可以根据它指定查询某层<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;<font color="#ff0000">TextCriteria tc = new TextCriteria();<br />
</font>&nbsp;&nbsp;&nbsp;List&lt;String&gt; searchFields = new ArrayList&lt;String&gt;();<br />
&nbsp;&nbsp;&nbsp;searchFields.add("type");<br />
&nbsp;&nbsp;&nbsp;searchFields.add("sun");<br />
&nbsp;&nbsp;&nbsp;tc.setSearchFields(searchFields);//添加需要查询的字段名<br />
&nbsp;&nbsp;&nbsp;tc.setSearchText("1");//模糊查询的关键字<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;List results=webQuery.query(tc,layerList);//执行查询<br />
&nbsp;&nbsp;&nbsp;System.out.println(results.size());//查询结果数量<br />
&nbsp;&nbsp;&nbsp;for(int ii=0;ii&lt;results.size();ii++){<br />
&nbsp;&nbsp;&nbsp;&nbsp;QueryResult result = (QueryResult) results.get(ii);<br />
&nbsp;&nbsp;&nbsp;&nbsp;result.highlight();//执行高亮操作<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(result.getDetails());//result.getDetails()可以获得所有字段<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;webMap.getWebContext().refresh();//刷新所有控件</p>
<p>转载于: http://leo43.blog.hexun.com/p9/default.aspx</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/mycolby/aggbug/302246.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2009-11-13 16:12 <a href="http://www.blogjava.net/mycolby/articles/302246.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ArcGis Server 处理点层高亮不能清除的问题</title><link>http://www.blogjava.net/mycolby/articles/302245.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Fri, 13 Nov 2009 08:11:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/302245.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/302245.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/302245.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/302245.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/302245.html</trackback:ping><description><![CDATA[&nbsp;通常使用的下面代码不能够清除高亮的点层图形<br />
&nbsp; WebQuery pWebQuery = (WebQuery)webMap.getWebContext().getAttribute("query");<br />
&nbsp;&nbsp;pWebQuery.clearGraphics();<br />
<br />
<br />
<br />
&nbsp; 因为实际上高亮的处理ADF是通过新添加一个图层来实现的,WebGraphics实际上就是控制这个图层.<br />
&nbsp; WebGraphics graphics = webMap.getWebContext().getWebGraphics();<br />
&nbsp;&nbsp;graphics.clearGraphics();//这样就能够正确清除所有高亮的元素了<br />
<br />
<br />
转载于: http://leo43.blog.hexun.com/p9/default.aspx
<img src ="http://www.blogjava.net/mycolby/aggbug/302245.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2009-11-13 16:11 <a href="http://www.blogjava.net/mycolby/articles/302245.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ArcGis Server 自定义command按钮</title><link>http://www.blogjava.net/mycolby/articles/302244.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Fri, 13 Nov 2009 08:10:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/302244.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/302244.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/302244.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/302244.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/302244.html</trackback:ping><description><![CDATA[<p>package com.demo;<br />
import javax.faces.event.ActionEvent;<br />
import com.esri.adf.web.data.WebContext;<br />
import com.esri.adf.web.data.geometry.WebExtent;<br />
import com.esri.adf.web.faces.event.MapEvent;<br />
import com.esri.adf.web.faces.event.MapToolAction;<br />
public class MyFullExtent {<br />
WebContext context;<br />
public WebContext getContext() {<br />
return context;<br />
}<br />
public void setContext(WebContext context) {<br />
this.context = context;<br />
}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
public void setFullExtent(){<br />
try{<br />
WebExtent ex=context.getWebMap().getFullExtent();<br />
context.getWebMap().setCurrentExtent(ex);<br />
context.refresh();<br />
}catch(Exception ex){<br />
ex.printStackTrace();<br />
}<br />
}<br />
}<br />
</p>
<p><br />
转载于: http://leo43.blog.hexun.com/p9/default.aspx&nbsp;<br />
&lt;managed-bean&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;managed-bean-name&gt;myFullExtent&lt;/managed-bean-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;managed-bean-class&gt;com.demo. MyFullExtent &lt;/managed-bean-class&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;managed-property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property-name&gt;context&lt;/property-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;#{mapContext}&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/managed-property&gt;<br />
&nbsp; &lt;/managed-bean&gt;<br />
<br />
<br />
<code id="code2">&nbsp;&lt;a:command id="fullExtent" action="#{myFullExtent.setFullExtent}" toolText="全图显示" /&gt;</code><br />
</p>
<img src ="http://www.blogjava.net/mycolby/aggbug/302244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2009-11-13 16:10 <a href="http://www.blogjava.net/mycolby/articles/302244.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ArcGis Server 认识MapServerPort接口</title><link>http://www.blogjava.net/mycolby/articles/302243.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Fri, 13 Nov 2009 08:09:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/302243.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/302243.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/302243.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/302243.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/302243.html</trackback:ping><description><![CDATA[<p>AGSMapResource agsMap = ((AGSMapResource)webContext.getResources().get("ags1"));//获得数据源,配置文件中有声明<br />
MapServerPort mapServer = agsMap.getMapServer();</p>
<p>//生成查询对象<br />
EnvelopeN env = new EnvelopeN(extent.getMinX(), extent.getMinY(), extent.getMaxX(), extent.getMaxY(),null, null, null, null, null);<br />
SpatialFilter spatialFilter = new SpatialFilter();<br />
spatialFilter.setSpatialRel(EsriSpatialRelEnum.esriSpatialRelIntersects);<br />
spatialFilter.setWhereClause("");<br />
spatialFilter.setSearchOrder(EsriSearchOrder.esriSearchOrderSpatial);<br />
spatialFilter.setSpatialRelDescription("");<br />
spatialFilter.setGeometryFieldName("");<br />
spatialFilter.setFilterGeometry(env);</p>
<p><br />
try{<br />
&nbsp;&nbsp;&nbsp; int layerId = 1;//查询的土层,ID号配置文件中有声明<br />
&nbsp;&nbsp;&nbsp; this.countedFeatures = mapServer.queryFeatureCount(mapServer.getDefaultMapName(), layerId, spatialFilter);<br />
&nbsp;&nbsp;&nbsp; System.out.println("你选择了 "+countedFeatures+" 要素");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; }catch(RemoteException rme){<br />
&nbsp;&nbsp;&nbsp;&nbsp; throw new ADFAGSException("Could not execute MapServer::queryFeatureCount()",rme);<br />
&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p><br />
Interface MapServerPort常用的方法：<br />
mapServer.getDefaultMapName() 获得默认地图名<br />
mapServer.queryFeatureCount(String mapName , int layerId ,SpatialFilter sf) return int 获得指定图层查询到的要素总数<br />
mapServer.queryFeatureData(String mapName , int layerId ,SpatialFilter sf) return RecordSet 获得指定图层查询到的要素集(包含所有属性字段)<br />
mapServer.getDefaultMapName() return String 返回默认地图名称<br />
mapServer.hasLayerCache(String mapName, int layerID) return bool 返回指定图层是否是缓存图层</p>
<br />
<br />
转载于: http://leo43.blog.hexun.com/p9/default.aspx
<img src ="http://www.blogjava.net/mycolby/aggbug/302243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2009-11-13 16:09 <a href="http://www.blogjava.net/mycolby/articles/302243.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ArcGis Server 实现动态图片标注</title><link>http://www.blogjava.net/mycolby/articles/302242.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Fri, 13 Nov 2009 08:08:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/302242.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/302242.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/302242.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/302242.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/302242.html</trackback:ping><description><![CDATA[<p>//获得的标点<br />
WebPoint pt=(WebPoint)arg0.getWebGeometry().toMapGeometry(arg0.getWebContext().getWebMap());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>//获得图片的二进制 可以在application启动时进行读取，放在context的某个attribute里面。<br />
String picPath= FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath()+"\\images\\angle.gif";<br />
File myFile = new File(picPath);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
FileInputStream myStream= newFileInputStream(myFile);&nbsp;&nbsp;&nbsp; <br />
BufferedInputStream buf = newBufferedInputStream(myStream);<br />
byte[] bytInput = newbyte[(int)myFile.length()];<br />
buf.read(bytInput, 0, (int) myFile.length());<br />
buf.close();<br />
myStream.close();</p>
<p><br />
//在地图上标注<br />
WebPictureMarkerSymbol markers=newWebPictureMarkerSymbol(); <br />
markers.setPicture(bytInput);<br />
GraphicElement ge=new GraphicElement();<br />
ge.setGeometry(pt);<br />
ge.setSymbol(markers);<br />
WebGraphics graphics=arg0.getWebContext().getWebGraphics();<br />
graphics.addGraphics(ge);<br />
arg0.getWebContext().refresh();</p>
<br />
转载于: http://leo43.blog.hexun.com/p9/default.aspx
<img src ="http://www.blogjava.net/mycolby/aggbug/302242.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2009-11-13 16:08 <a href="http://www.blogjava.net/mycolby/articles/302242.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ArcGis Server 实现动态文字标注</title><link>http://www.blogjava.net/mycolby/articles/302241.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Fri, 13 Nov 2009 08:07:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/302241.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/302241.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/302241.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/302241.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/302241.html</trackback:ping><description><![CDATA[<p>webMap=arg0.getWebContext().getWebMap(); <br />
WebPoint pt=(WebPoint)arg0.getWebGeometry().toMapGeometry(webMap); </p>
<p><br />
WebTrueTypeMarkerSymbol trueMarkerSymbol=new WebTrueTypeMarkerSymbol(); //注意使用系统里面已经安装的字体 <br />
trueMarkerSymbol.setFontName("ESRITransportation &amp; Civic");//设置索引 <br />
trueMarkerSymbol.setCharacterIndex(8);<br />
trueMarkerSymbol.setFontColor("255,0,0");<br />
trueMarkerSymbol.setFontSize(20);<br />
trueMarkerSymbol.addTextValue("chongqing");//标注的文本<br />
trueMarkerSymbol.setFontStyle(WebTrueTypeMarkerSymbol.BOLD);</p>
<p><br />
GraphicElement ge=new GraphicElement(); <br />
ge.setGeometry(pt);<br />
ge.setSymbol(trueMarkerSymbol);<br />
WebGraphics graphics=arg0.getWebContext().getWebGraphics();<br />
graphics.addGraphics(ge);<br />
arg0.getWebContext().refresh();<br />
<br />
转载于: http://leo43.blog.hexun.com/p9/default.aspx</p>
<img src ="http://www.blogjava.net/mycolby/aggbug/302241.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2009-11-13 16:07 <a href="http://www.blogjava.net/mycolby/articles/302241.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>认识ArcGis Server ADF中的UIComponent</title><link>http://www.blogjava.net/mycolby/articles/302240.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Fri, 13 Nov 2009 08:06:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/302240.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/302240.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/302240.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/302240.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/302240.html</trackback:ping><description><![CDATA[&nbsp; <font color="#0000ff">javax.faces.component.UIComponent<br />
</font><br />
两种方法获得WebMap<br />
<br />
//方法一<br />
MapControl mapControl = (MapControl) component;<br />
WebMap webMap = mapControl.getWebMap();<br />
<br />
//方法二<br />
WebContext wctx = WebUtil.getWebContext(component);<br />
WebMap webMap = wctx.getWebMap();<br />
<br />
转载于:http://leo43.blog.hexun.com/p9/default.aspx
<img src ="http://www.blogjava.net/mycolby/aggbug/302240.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2009-11-13 16:06 <a href="http://www.blogjava.net/mycolby/articles/302240.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>知名度较高的电子地图</title><link>http://www.blogjava.net/mycolby/articles/271575.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Tue, 19 May 2009 10:47:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/271575.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/271575.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/271575.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/271575.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/271575.html</trackback:ping><description><![CDATA[Live Search(<a href="http://local.live.com/" target="_blank"><font size="2">比尔&#183;盖次的地图</font></a>)：<a href="http://ditu.live.com/">http://ditu.live.com/</a>?<br />
sogou：<a href="http://map.sogou.com/">http://map.sogou.com/</a><br />
google：http://ditu.google.cn/<br />
我要地图：http://maps.51ditu.com/<br />
城市实景地图：http://www.city8.com/<br />
图吧：http://www.mapbar.com/<br />
E龙：http://map.elong.com/<br />
baidu：http://map.baidu.com/#<br />
一图览天下：http://www.ppmap.com/<br />
华夏图网：http://map2china.com/<br />
<br />
<img src ="http://www.blogjava.net/mycolby/aggbug/271575.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2009-05-19 18:47 <a href="http://www.blogjava.net/mycolby/articles/271575.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>地理(投影)坐标与屏幕坐标的转换!</title><link>http://www.blogjava.net/mycolby/articles/268261.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Wed, 29 Apr 2009 16:41:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/268261.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/268261.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/268261.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/268261.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/268261.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 刚接触到这个东东,确实头晕!什么地理坐标,投影坐标,屏幕坐标等等.......哎....地理知识中学学过(都不知道咋学的),数学貌似N多年不用也都还给老师了!确实悲哀.....唉....终于认真的研究了一下才算明白是怎么回事了!其实不要管什么地理坐标,投影坐标还是屏幕坐标,搞的你是非要知道天文地理似的才能去动手去做这个东东!原理掌握一个,那就是只用弄明白地理坐标和屏幕坐标的定义规则就OK了...<br />
&nbsp;&nbsp;&nbsp; 地理坐标定义规则:X轴(代表经度)向右递增,Y轴(纬度)向上递增,就好比小学学过的平面坐标(貌似又忘了,要重读小学了)吧?向左,向下的规则,这个不用我再阐述了吧,如果你还不明白,那我劝你还是真要去重读小学了....比我更悲哀,嘿嘿,总算找到一个知已啊....不容易啊...<br />
&nbsp;&nbsp;&nbsp; 屏幕坐标定义规则:X轴向右递增,Y轴向下递增..<br />
&nbsp;&nbsp;&nbsp; 可以看出,地理坐标和屏幕坐标的区别仅仅只是在于Y轴递增方向是相反的...(这就是不同).<br />
&nbsp;&nbsp;&nbsp; 好了,现在我们开始转换他们吧.&nbsp; 这里强调一点的就是为了保证精度,地理坐标的度*3600换算成秒,所有的取值用double来计算,最后的结果再转换成int<br />
&nbsp;&nbsp;&nbsp; 1.已知道屏幕的高(y)和宽(h),地理坐标区域的范围(maxLon,minLon,maxLat,minLat)..这里我们知道了这些已知的参数...<br />
&nbsp;&nbsp;&nbsp; 2.我们可以算出每像素所代表的经度和纬度(有人称这个为比例因子):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;公式:scaleX = h/((maxLon-minLon)*3600)&nbsp; ----------X轴上每像素代表的经度秒数;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 公式:scaleY = y/((maxLat-minLat)*3600)&nbsp;&nbsp;-----------Y轴上每像素代表的纬度秒数;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这两个比例因子就是两个坐标系之间的关系..<br />
&nbsp;&nbsp;&nbsp; 3.很简单的一步了,那就是算出该地理坐标区域中的任何一点(lon,lat)在屏幕上的坐标了,怎么算?下面来讲:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 公式:screenX = lon*3600/scaleX;&nbsp; ---------屏幕坐标X轴坐标<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;公式:screenY = lat*3600/scaleY; ----------屏幕坐标Y轴坐标,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 怎么样?很简单吧?这里我们就算出地理坐标上任何一点转到屏幕上的坐标是多少了......<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;还有最后一步,那就是我们要把该地理区域占满占个屏幕该怎么办呢?<br />
&nbsp;&nbsp; 4.&nbsp;接着我们需要该地理区域占满占个屏幕该怎么办呢<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;公式:minX = minLon*3600/scaleX;&nbsp;&nbsp;&nbsp; 区域左边置最左端<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;公式:minY = minLat*3600/scaleY;&nbsp;&nbsp;&nbsp;&nbsp; 区域上面置最上端<br />
&nbsp;&nbsp;&nbsp;5.&nbsp;当地地理范围区域占满整个屏幕时,我们需要用到第三步计算出来的&nbsp;screenX和screenY两个参数<br />
,该区域中的任何一点的公式如下:&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;公式:X&nbsp;= screenX - minX = (lon - minLon)*3600/scaleX;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;由于纬度的方向和屏幕Y轴是相反的,&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;公式:screenMaxLat = (maxLat - minLat)*3600/scaleY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 公式:screenLat = (lat - minLat)*3600/scaleY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;公式:Y = screenMaxLat - screenLat = (maxLat - lat)*3600/scaleY;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;至于为什么是这个公式,我想大家仔细想想就明白了..<br />
&nbsp; 6.总结:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;经纬度转屏幕坐标的最终公式如下:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;公式: X = (lon - minLon)*3600/scaleX;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 公式: Y =&nbsp;&nbsp;(maxLat - lat)*3600/scaleY;<br />
&nbsp;&nbsp;接着我们由上面的公式可以推出屏幕坐标转经纬度坐标公式如下：<br />
　　公式：lon =&nbsp;X * scaleX/3600 + minLon;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;公式：lat = maxLat - y* scaleY/3600;<br />
<br />
&nbsp; 呼呼......终于写完了,由于要赶着睡觉,因为明天还要早起上班,可能写的还不够清楚,大家再仔细研究一下就能够明白了!&nbsp;&nbsp;&nbsp; 
 <img src ="http://www.blogjava.net/mycolby/aggbug/268261.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2009-04-30 00:41 <a href="http://www.blogjava.net/mycolby/articles/268261.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>地理坐标系和大地坐标系(转载)</title><link>http://www.blogjava.net/mycolby/articles/248449.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Fri, 26 Dec 2008 06:33:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/248449.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/248449.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/248449.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/248449.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/248449.html</trackback:ping><description><![CDATA[<p>地理坐标：为球面坐标。 参考平面地是 椭球面。坐标单位:经纬度</p>
<p>大地坐标：为平面坐标。参考平面地是 水平面&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 坐标单位：米、千米等。<br />
</p>
<p>地理坐标转换到大地坐标的过程可理解为投影。&nbsp;&nbsp; （投影：将不规则的地球曲面转换为平面）</p>
<p>在ArcGIS中预定义了两套坐标系：地理坐标系（Geographic coordinate system）投影坐标系（Projected coordinate system），<br />
</p>
<p>1、首先理解地理坐标系（Geographic coordinate system），Geographic coordinate system直译为 <br />
地理坐标系统，是以经纬度为地图的存储单位的。很明显，Geographic coordinate syst <br />
em是球面坐标系统。我们要将地球上的数字化信息存放到球面坐标系统上，如何进行操作 <br />
呢？地球是一个不规则的椭球，如何将数据信息以科学的方法存放到椭球上？这必然要求 <br />
我们找到这样的一个椭球体。这样的椭球体具有特点：可以量化计算的。具有长半轴，短 <br />
半轴，偏心率。以下几行便是Krasovsky_1940椭球及其相应参数。 <br />
Spheroid: Krasovsky_1940 <br />
Semimajor Axis: 6378245.000000000000000000 <br />
Semiminor Axis: 6356863.018773047300000000 <br />
Inverse Flattening（扁率）: 298.300000000000010000 <br />
然而有了这个椭球体以后还不够，还需要一个大地基准面将这个椭球定位。在坐标系统描 <br />
述中，可以看到有这么一行： <br />
Datum: D_Beijing_1954 <br />
表示，大地基准面是D_Beijing_1954。 <br />
-------------------------------------------------------------------------------- <br />
有了Spheroid和Datum两个基本条件，地理坐标系统便可以使用。 <br />
完整参数： <br />
Alias: <br />
Abbreviation: <br />
Remarks: <br />
Angular Unit: Degree (0.017453292519943299) <br />
Prime Meridian（起始经度）: Greenwich (0.000000000000000000) <br />
Datum（大地基准面）: D_Beijing_1954 <br />
Spheroid（参考椭球体）: Krasovsky_1940 <br />
Semimajor Axis: 6378245.000000000000000000 <br />
Semiminor Axis: 6356863.018773047300000000 <br />
Inverse Flattening: 298.300000000000010000 <br />
</p>
<p><br />
2、接下来便是Projection coordinate system（投影坐标系统），首先看看投影坐 <br />
标系统中的一些参数。 <br />
Projection: Gauss_Kruger <br />
Parameters: <br />
False_Easting: 500000.000000 <br />
False_Northing: 0.000000 <br />
Central_Meridian: 117.000000 <br />
Scale_Factor: 1.000000 <br />
Latitude_Of_Origin: 0.000000 <br />
Linear Unit: Meter (1.000000) <br />
Geographic Coordinate System: <br />
Name: GCS_Beijing_1954 <br />
Alias: <br />
Abbreviation: <br />
Remarks: <br />
Angular Unit: Degree (0.017453292519943299) <br />
Prime Meridian: Greenwich (0.000000000000000000) <br />
Datum: D_Beijing_1954 <br />
Spheroid: Krasovsky_1940 <br />
Semimajor Axis: 6378245.000000000000000000 <br />
Semiminor Axis: 6356863.018773047300000000 <br />
Inverse Flattening: 298.300000000000010000 <br />
从参数中可以看出，每一个投影坐标系统都必定会有Geographic Coordinate System。 <br />
投影坐标系统，实质上便是平面坐标系统，其地图单位通常为米。 <br />
那么为什么投影坐标系统中要存在坐标系统的参数呢？ <br />
这时候，又要说明一下投影的意义：将球面坐标转化为平面坐标的过程便称为投影。 <br />
好了，投影的条件就出来了： <br />
a、球面坐标 <br />
b、转化过程（也就是算法） <br />
也就是说，要得到投影坐标就必须得有一个&#8220;拿来&#8221;投影的球面坐标，然后才能使用算法 <br />
去投影！ <br />
即每一个投影坐标系统都必须要求有Geographic Coordinate System参数。<br />
</p>
<p>关于北京54和西安80是我们使用最多的坐标系<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 先简单介绍高斯-克吕格投影的基本知识，了解就直接跳过，我国大中比例尺地图均采用高斯-克吕格投影，其通常是按6度和3度分带投影，1:2.5万－1:50万比例尺地形图采用经差6度分带，1:1万比例尺的地形图采用经差3度分带。具体分带法是：6度分带从本初子午线开始，按经差6度为一个投影带自西向东划分，全球共分60个投影带，带号分别为1－60；3度投影带是从东经1度30秒经线开始，按经差3度为一个投影带自西向东划分，全球共分120个投影带。为了便于地形图的测量作业，在高斯-克吕格投影带内布置了平面直角坐标系统，具体方法是，规定中央经线为X轴，赤道为Y轴，中央经线与赤道交点为坐标原点，x值在北半球为正，南半球为负，y值在中央经线以东为正，中央经线以西为负。由于我国疆域均在北半球，x值均为正值，为了避免y值出现负值，规定各投影带的坐标纵轴均西移500km，中央经线上原横坐标值由0变为500km。为了方便带间点位的区分，可以在每个点位横坐标y值的百千米位数前加上所在带号，如20带内A点的坐标可以表示为YA=20 745 921.8m。</p>
<div>&nbsp;&nbsp;&nbsp; 在Coordinate Systems\Projected Coordinate Systems\Gauss Kruger\Beijing 1954目录中，我们可以看到四种不同的命名方式：</div>
<div>&nbsp;&nbsp;&nbsp; Beijing 1954 3 Degree GK CM 75E.prj<br />
&nbsp;&nbsp;&nbsp; Beijing 1954 3 Degree GK Zone 25.prj<br />
&nbsp;&nbsp;&nbsp; Beijing 1954 GK Zone 13.prj<br />
&nbsp;&nbsp;&nbsp; Beijing 1954 GK Zone 13N.prj</div>
<div>&nbsp;&nbsp;&nbsp; 对它们的说明分别如下：</div>
<div>&nbsp;&nbsp;&nbsp; 三度分带法的北京54坐标系，中央经线在东75度的分带坐标，横坐标前不加带号<br />
&nbsp;&nbsp;&nbsp; 三度分带法的北京54坐标系，中央经线在东75度的分带坐标，横坐标前加带号<br />
&nbsp;&nbsp;&nbsp; 六度分带法的北京54坐标系，分带号为13，横坐标前加带号<br />
&nbsp;&nbsp;&nbsp; 六度分带法的北京54坐标系，分带号为13，横坐标前不加带号</div>
<div>&nbsp;&nbsp;&nbsp; 在Coordinate Systems\Projected Coordinate Systems\Gauss Kruger\Xian 1980目录中，文件命名方式又有所变化：</div>
<div>&nbsp;&nbsp;&nbsp; Xian 1980 3 Degree GK CM 75E.prj<br />
&nbsp;&nbsp;&nbsp; Xian 1980 3 Degree GK Zone 25.prj<br />
&nbsp;&nbsp;&nbsp; Xian 1980 GK CM 75E.prj<br />
&nbsp;&nbsp;&nbsp; Xian 1980 GK Zone 13.prj</div>
<div>&nbsp;&nbsp;&nbsp; 西安80坐标文件的命名方式、含义和北京54前两个坐标相同，但没有出现&#8220;带号+N&#8221;这种形式，为什么没有采用统一的命名方式？让人看了有些费解。</div>
<img src ="http://www.blogjava.net/mycolby/aggbug/248449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2008-12-26 14:33 <a href="http://www.blogjava.net/mycolby/articles/248449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转载:数据编辑问题</title><link>http://www.blogjava.net/mycolby/articles/247074.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Thu, 18 Dec 2008 04:41:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/247074.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/247074.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/247074.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/247074.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/247074.html</trackback:ping><description><![CDATA[数据编辑问题<wbr> <wbr>在<font style="line-height: 1.3em" face="Times" size="3">AE</font><wbr>中数据的编辑是一个重点，也是一个难点。它包括的东西非常多，如：地物的添加，地物的修改，地物查询，节点捕捉，地物的符号化等一系列的问题。熟练的使用地物编辑的功能，是开发一个系统必须具备的条件。数据编辑问题解决得好坏直接决定着软件是否操作方便。在这我只是写一些相应的功能函数，至于软件开发中的架构，我不考虑。 <br />
<br />
<br />
<strong><wbr><font style="line-height: 1.3em" face="Times" size="3">1、 </font><wbr></strong><wbr><strong><wbr>添加地物</strong><wbr> <br />
什么是地物，这是<font style="line-height: 1.3em" face="Times" size="3"> GIS</font><wbr>的基本概念，我在这不想多说，我只想说明一点，地物可以表现在地图上，如房子、铁路、水管等等。我们把房子的总称称为一个地物类，在<font style="line-height: 1.3em" face="Times" size="3">AE</font><wbr>中对应一个地物类（<font style="line-height: 1.3em" face="Times" size="3">IFeatureClass</font><wbr>），一个地物类在地图上表示为一个地物层（<font style="line-height: 1.3em" face="Times" size="3">IFeatureLayer</font><wbr>），单独的一栋房子或一条管道我们称为地物（<font style="line-height: 1.3em" face="Times" size="3">IFeature</font><wbr>），<font style="line-height: 1.3em" face="Times" size="3">Arcgis</font><wbr>中一类地物只能放在一个层，通过图层的叠加组成一幅地图。 <br />
<br />
<br />
熟悉面向对象的编程语言的人都知道，其实上边的地物类，地物的概念就是类和实体的概念。房子、铁路、水管等是一类地物的抽象，而具体的某一房子就是对象了。大家了解了这一点。接下来的开发就容易理解一些了。当然，还有一些其他的概念也必须了解一下：如长事务、短事务、编辑空间等。请大家查找一些相关资料，了解这方面的内容。 <br />
<br />
<br />
我们先开始最基本的编辑功能：添加点线面的操作。它包括输入添加点线面和通过鼠标拖动添加点线面。下边讨论一下添加点线面的基本的实现方法： <br />
<br />
<br />
<font style="line-height: 1.3em" face="Times" size="3">一、</font><wbr><strong><wbr>添加点</strong><wbr> <br />
我们可以有多种方法添加点，但基本的思路一样，只是有少量的接口有变化。下边是通过<font style="line-height: 1.3em" face="Times" size="3">FeatrueClass</font><wbr>的<font style="line-height: 1.3em" face="Times" size="3">CreateFeature</font><wbr>（）函数添加地物。 <br />
<br />
<br />
public void AddPointByStore()&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//得到要添加地物的图层&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFeatureLayer l = MapCtr.Map.get_Layer(0) as IFeatureLayer;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//定义一个地物类,把要编辑的图层转化为定义的地物类&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFeatureClass fc = l.FeatureClass ;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//先定义一个编辑的工作空间,然后把转化为数据集,最后转化为编辑工作空间,&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IWorkspaceEdit w = (fc as IDataset).Workspace as IWorkspaceEdit;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFeature f ;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IPoint p;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//开始事务操作&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w.StartEditing (false);&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//开始编辑&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w.StartEditOperation() ;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0 ; i&lt; 100 ; i++ )&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //创建一个地物&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f= fc.CreateFeature();&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p = new PointClass();&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设置点的坐标&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p.PutCoords (i,i);&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //确定图形类型&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f.Shape = p;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //保存地物&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f.Store();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//结束编辑&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w.StopEditOperation();&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//结束事务操作&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w.StopEditing(true); <br />
} <br />
<br />
<br />
上边的代码能添加点地物，但不能作为最终的代码使用，细心的人会看到。这段代码只是把第一层加进来，然后在第一层上边添加点地物，如果第一层不是点层，该怎么办，那就要判断了。怎么判断我们以后再说。通过上边的代码，我们已经清楚地了解到，编辑地物的基本框架，这也是我们所说的事务，如果想操作能返回和重做，就必须把代码写在<font style="line-height: 1.3em" face="Times" size="3">IWorkspaceEdit</font><wbr>的<font style="line-height: 1.3em" face="Times" size="3">StartEditing()</font><wbr>和<font style="line-height: 1.3em" face="Times" size="3">StopEditing()</font><wbr>函数之间，把相关的操作写在<font style="line-height: 1.3em" face="Times" size="3">IWorkspaceEdit</font><wbr>的<font style="line-height: 1.3em" face="Times" size="3">StartEditOperation()</font><wbr>和<font style="line-height: 1.3em" face="Times" size="3">StopEditOperation()</font><wbr>之间。并且操作是利用<font style="line-height: 1.3em" face="Times" size="3">IWorkspaceEdit</font><wbr>接口完成的，所以要仔细理会<font style="line-height: 1.3em" face="Times" size="3">IWorkspaceEdit</font><wbr>接口的用处，如何工作空间都可以转化为<font style="line-height: 1.3em" face="Times" size="3">IWorkspaceEdit</font><wbr>的对象，当转化为<font style="line-height: 1.3em" face="Times" size="3">IWorkspaceEdit</font><wbr>定义的对象后，我们定义一个<font style="line-height: 1.3em" face="Times" size="3">IFeature</font><wbr>的对象，然后利用<font style="line-height: 1.3em" face="Times" size="3">IFeatureClass</font><wbr>的<font style="line-height: 1.3em" face="Times" size="3">CreateFeature()</font><wbr>函数创建一个地物，并赋值给定义的<font style="line-height: 1.3em" face="Times" size="3">IFeature</font><wbr>对象。接着设置<font style="line-height: 1.3em" face="Times" size="3">IFeature</font><wbr>对象的一些属性，如：坐标值，坐标系，地物类型等，最后是调用<font style="line-height: 1.3em" face="Times" size="3">IFeature</font><wbr>对象的<font style="line-height: 1.3em" face="Times" size="3">Store()</font><wbr>保存添加的地物。 <br />
<br />
<br />
上边的方法可以添加点地物，接着看看下边的代码。看有什么不同： <br />
<br />
<br />
public void AddPointByWrite() <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; { <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFeatureLayer l = MapCtr.Map.get_Layer(0) as IFeatureLayer; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFeatureClass fc = l.FeatureClass ; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFeatureClassWrite fr = fc as IFeatureClassWrite ; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><wbr>IWorkspaceEdit w = (fc as IDataset).Workspace as IWorkspaceEdit;</strong><wbr> <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFeature f ;&nbsp;&nbsp; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IPoint p; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; w.StartEditing (true); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; w.StartEditOperation() ; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0 ; i&lt; 100 ; i++ ) <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f= fc.CreateFeature(); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p = new PointClass(); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.PutCoords (i,i); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.Shape = p; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fr.WriteFeature (f); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w.StopEditOperation(); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w.StopEditing(true); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; } <br />
<br />
<br />
代码中用红色标记的两行就是不同的代码，其实他就是保存方式的不同而已。在这利用了<font style="line-height: 1.3em" face="Times" size="3">IFeatureClassWrite </font><wbr>接口来保存数据。再看看下边的代码： <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void AddPointByBuffer() <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFeatureLayer l = MapCtr.Map.get_Layer(0) as IFeatureLayer; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFeatureClass fc = l.FeatureClass ; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IWorkspaceEdit w = (fc as IDataset).Workspace as IWorkspaceEdit; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w.StartEditing (true); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w.StartEditOperation() ; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IPoint p; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFeatureBuffer f; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IFeatureCursor cur = fc.Insert(true); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0 ; i&lt; 100 ; i++ ) <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f= fc.CreateFeatureBuffer(); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p = new PointClass(); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p.PutCoords (i,i); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f.Shape = p; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cur.InsertFeature (f); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w.StopEditOperation(); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w.StopEditing(true); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; } <br />
其实不同的地方就两句代码，红色表示的。在这没有再定义地物接口了（<font style="line-height: 1.3em" face="Times" size="3">IFeature</font><wbr>），而是使用<font style="line-height: 1.3em" face="Times" size="3">IFeatureBuffer </font><wbr>接口，保存的时候是使用<font style="line-height: 1.3em" face="Times" size="3">InsertFeature()</font><wbr>保存，这对大数据量处理的非常有好处。他是先把要添加的保存到缓冲区里。最后一次性保存。 <br />
<font style="line-height: 1.3em" face="Times" size="3">二、</font><wbr><strong><wbr>添加线</strong><wbr> <br />
添加线的方法跟添加点一样，不同的只是地物类型不一样而已，我把代码贴出来，大家跟添加点的方式进行对比。这样便于记忆。也有利于理解。 <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; public void AddLineByWrite() <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; { <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFeatureLayer l = MapCtr.Map.get_Layer(0) as IFeatureLayer; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFeatureClass fc = l.FeatureClass ; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFeatureClassWrite fr = fc as IFeatureClassWrite ; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IWorkspaceEdit w = (fc as IDataset).Workspace as IWorkspaceEdit; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IFeature f ;&nbsp;&nbsp; <br />
<br />
<br />
//可选参数的设置 <br />
<br />
<br />
object Missing = Type.Missing; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IPoint p=new PointClass(); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; w.StartEditing (true); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; w.StartEditOperation() ; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0 ; i&lt; 100 ; i++ ) <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f = fc.CreateFeature(); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//定义一个多义线对象 <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IPolyline PlyLine=new PolylineClass(); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//定义一个点的集合 <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IPointCollection ptclo = PlyLine as IPointCollection; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//定义一系列要添加到多义线上的点对象，并赋初始值 <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int j=0;j&lt;4;j++) <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p.PutCoords(j,j); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ptclo.AddPoint(p,ref Missing,ref Missing); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f.Shape = PlyLine; <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fr.WriteFeature (f); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w.StopEditOperation(); <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w.StopEditing(true); <br />
<br />
<br />
} <br />
<br />
<br />
至于添加线的其他两种方法，通过修改添加点的代码，就可以得到。可以自己想想然后测试，这样便于记忆和理解。 <br />
<img src ="http://www.blogjava.net/mycolby/aggbug/247074.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2008-12-18 12:41 <a href="http://www.blogjava.net/mycolby/articles/247074.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ArcGis server9.2发布</title><link>http://www.blogjava.net/mycolby/articles/237167.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Tue, 28 Oct 2008 09:23:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/237167.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/237167.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/237167.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/237167.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/237167.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 前一篇文章讲了ArcGis server9.2配置.<br />
&nbsp;&nbsp;&nbsp; 这一篇接着讲ArcGis server9.2的例子发布.<br />
&nbsp;&nbsp;&nbsp; 这里我是用eclipse IDE进行开发,针对eclipse配置来进行讲述:<br />
&nbsp;&nbsp; 1. 拷贝插件到eclipse中，进入\Program Files\ArcGIS\java\tools\eclipse_plugin\arcgis_update_site\server文件下把features和plugins插件拷贝到eclipse文件夹下。<br />
&nbsp;&nbsp; 2. 删除eclipse下configuration文件夹除config.ini配置外的所有文件。<br />
&nbsp;&nbsp; 3. 打开eclipse，这时候eclipse将会重新更新一次。<br />
&nbsp;&nbsp; 4. 打开windows -&gt; preferences,弹出窗口：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/444.JPG" border="0" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里gis server填写server服务器名，我在这里就是本机的机器名。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; usename填写当前系统用户名。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; password填写当前系统用户登录密码。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; domain填写本机的机器名。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;点击test&nbsp;,弹出如下窗口：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/6666.JPG" border="0" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 看该提示表明连接成功。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5. 打开arcgismanager页面，点击services，点击<a onclick="document.forms['frmServices']['frmServices:_idcl'].value='frmServices:_id75'; document.forms['frmServices'].submit(); return false;" href="http://localhost:8099/arcgismanager/services/services.jsf#"><span style="margin-left: 3px">Add New Service</span></a> 进行服务的添加。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6. 服务添加成功后，点击start，打开该项服务。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7. 此时回到eclipse，打开添加project，弹出窗口：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/7777.JPG" border="0" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;选择ArcGis Web Samples选项，给该项目名称，并选择将要发布该项目的容器，进行到最后一步的时候会弹出窗口：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/8888.JPG" border="0" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里的map就是我在arcgismanager里面添加的新服务，我们接着把map服务移动左边，点击finish，就OK了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8.&nbsp;例子进行发布后就出现错误如下：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2008-7-27 1:51:43 com.esri.adf.web.data.GISResource init<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;严重: Unable to initialize functionality : toc. This functionality will be removed from this resource:map</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.lang.NullPointerException: Unable to initialize AGSTocFunctionality. Invalid parameters.</p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;经过修改WEB-INF/faces-config.xml和WebContent/WEB-INF/context-attributes.xml两个JSF的配置文件解决问题<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9. 此时重新发布该项目，OK，一切搞定！<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;写到这里，arcgis server大家可以入门开始研究了，暂时先写到这里！<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<img src ="http://www.blogjava.net/mycolby/aggbug/237167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2008-10-28 17:23 <a href="http://www.blogjava.net/mycolby/articles/237167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ArcGis server9.2配置</title><link>http://www.blogjava.net/mycolby/articles/237028.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Tue, 28 Oct 2008 02:17:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/237028.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/237028.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/237028.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/237028.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/237028.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; 这里讲的是对于典型的简单安装的：即所有的程序组件都安装在同一台机器上。<br />
&nbsp;&nbsp; 1. 在当前的用户下进行安装ArcGis server9.2程序.<br />
&nbsp;&nbsp; 2. 安装部分（ArcGIS Server post installation）:在&#8220;开始-程序-ArcGIS Server-AS post installation&#8221;中启动。在提示下，设置管理员账号，密码；容器账号，密码。在＂ＮＥＸＴ＂提示下一步步走，其中一步是要连接到授权文件＂ＡrcGIS Server.ecp＂,点击＂浏览＂找到这个文件就可以了．这样就完成了该部分的安装.<br />
&nbsp;&nbsp; 3. 安装完成后，首先要做的是通过将当前系统用户添加到agsadmin用户组，完成创建管理gis服务帐户的创建．通过右键单击＂我的电脑－管理－本地用户和组－组＂在列表中找到agsadmin用户组，右键单击它，选择＂添加到组＂便可操作完成．<br />
&nbsp; 4. 添加用户组，也是类似于1中的步骤，找到agsusers用户组，进行添加。<br />
&nbsp; 5. 打开ArcGIS Catalog，在左侧的GIS Server节点中的&#8220;Add GIS Server&#8221;双击，在弹出的窗口中，选&#8220;Manager gis services &#8221;项，输入Sever URL 和&nbsp;服务器的机器名，就完成GIS服务器的连接,这里用到ArcGis Catalog是为了能够连接数据库来读取地图数据,也可以用ArcSde来连接。<br />
&nbsp; 这样就完成了整个的安装.<br />
&nbsp;&nbsp; 接着打开ArcGIS Server Manager页面，出现登录窗口。这里我们在User Name中填写用户名，格式为：机器名\ 用户名；密码为当前系统用户的登录密码。<br />
&nbsp;&nbsp; 如果此时提示"登录信息有误",试着把windows防火墙关闭,如果能打开ArcGis Server Manager,我们将需要对windows防火墙进行一下设置调整:<br />
<br />
<font size="2">
<ol type="1">
    <li>Navigate to Windows Firewall. <br />
    Start &gt; Settings &gt; Control Panel &gt; Windows Firewall <br />
    <br />
    The firewall is 'On' by default, the 'Recommended' setting.
    <li>Click on the Exceptions tab.
    <li>Click 'Add Port'.
    <li>Add the following information: <br />
    Name: Web Port (http) <br />
    Port Number: 80 <br />
    Type: TCP <br />
    <br />
    Click OK.
    <li>To add port 135, click 'Add Port'.
    <li>Add the following information: <br />
    <br />
    Name: DCOM (ArcGIS Server) <br />
    Port Number: 135 <br />
    Type: TCP <br />
    <br />
    Click OK.
    <li>Click 'Add Program' to add an exception for ArcSOM.exe.
    <li>Click 'Browse' and navigate to: <br />
    &lt;ArcGIS Install Directory&gt;\bin\ArcSOM.exe for example: <br />
    C:\Program Files\ArcGIS\bin\ArcSOM.exe <br />
    Click OK.
    <li>Click Add Program to add an exception for ArcSOC.exe.
    <li>Click 'Browse' and navigate to: <br />
    &lt;ArcGIS Install Directory&gt;\bin\ArcSOC.exe for example: <br />
    C:\Program Files\ArcGIS\bin\ArcSOC.exe <br />
    Click OK.
    <li>The ports and programs entered should now appear in the list of Programs and Services. Verify check marks appear next to each component.
    <li>Close Windows Firewall. </font></li>
</ol>
<br />
&nbsp;&nbsp; 登录进去后，即可进行ArcGis server的配置了. <br />
&nbsp;&nbsp; 
<img src ="http://www.blogjava.net/mycolby/aggbug/237028.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2008-10-28 10:17 <a href="http://www.blogjava.net/mycolby/articles/237028.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在axGlobeControl里面画线的一点体会(转载)</title><link>http://www.blogjava.net/mycolby/articles/224271.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Mon, 25 Aug 2008 12:43:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/224271.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/224271.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/224271.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/224271.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/224271.html</trackback:ping><description><![CDATA[<br />
<p><span style="font-size: 10.5pt; font-family: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">在<span lang="EN-US">axGlobeControl</span>里面画线，整个代码如下，<span lang="EN-US"><br />
'</span>添加新的图层<span lang="EN-US">,</span>先把图层属性改为覆盖<span lang="EN-US"><br />
Dim pG As IGraphicsLayer = New GlobeGraphicsLayer<br />
axGlobeControl1.Globe.AddLayerType(pG, esriGlobeLayerType.esriGlobeLayerTypeUnknown) '</span>把<span lang="EN-US">pG</span>这个<span lang="EN-US">layer</span>加到<span lang="EN-US">Globe</span>里<span lang="EN-US"><br />
<br />
Dim pGEP As IGlobeGraphicsElementProperties = New GlobeGraphicsElementProperties<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;pGEP.DrapeElement = True '</span>属性改为<span lang="EN-US">drape<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Dim pGL As IGlobeGraphicsLayer = New GlobeGraphicsLayer<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;pGL = pG<br />
<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;'</span>为要画的线定义<span lang="EN-US">symbol,</span>调用<span lang="EN-US">drawline<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Dim pSymbol As ISimpleLineSymbol = New SimpleLineSymbol<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;pSymbol.Width = 2<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Dim pcolor As IColor = New RgbColor<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;pcolor.RGB = RGB(230, 0, 0)<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;pSymbol.Color = pcolor<br />
<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Dim pGC3D As IGraphicsContainer3D = New GlobeGraphicsLayer<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;pGC3D = pG '</span>让<span lang="EN-US">pG</span>获得<span lang="EN-US">Container<br />
<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Dim nCount As Integer<br />
<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;For nCount = -90 To 90 Step 30<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;Dim pElement As IElement<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;'</span>纬线<span lang="EN-US"><br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;pElement = drawline(0, nCount, 0, 359.5, nCount, 0, pSymbol)<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;pGL.AddElement(pElement, pGEP, 0) '</span>修改后的属性加入到画好线的<span lang="EN-US">element</span>里面<span lang="EN-US"><br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;pGC3D.AddElement(pElement) '</span>把画好的图形加到<span lang="EN-US">layer</span>里面<span lang="EN-US"><br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;'</span>经线<span lang="EN-US"><br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;pElement = drawline(nCount, 0, 0, nCount, 359.5, 0, pSymbol)<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;pGL.AddElement(pElement, pGEP, 0) '</span>修改后的属性加入到画好线的<span lang="EN-US">element</span>里面<span lang="EN-US"><br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;pGC3D.AddElement(pElement) '</span>把画好的图形加到<span lang="EN-US">layer</span>里面<span lang="EN-US"><br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Next nCount<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;axGlobeControl1.Refresh()<br />
<br />
Public drawline(ByVal x1 As Double, ByVal y1 As Double, ByVal Z1 As Double, ByVal X2 As Double, ByVal Y2 As Double, ByVal Z2 As Double, ByVal symbol As ISimpleLineSymbol) As IElement<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Dim pElement As IElement<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;pElement = New LineElement<br />
<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Dim pLineEle As ILineElement<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;pLineEle = pElement<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;pLineEle.Symbol = symbol<br />
<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Dim tmpline As IPolyline = New Polyline<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;'</span>给要画的线定义起始点<span lang="EN-US"><br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Dim StartPoint As IPoint, EndPoint As IPoint<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;StartPoint = New Point<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;StartPoint.X = x1<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;StartPoint.Y = y1<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;StartPoint.Z = Z1<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;EndPoint = New Point<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;EndPoint.X = X2<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;EndPoint.Y = Y2<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;EndPoint.Z = Z2<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;tmpline.FromPoint = StartPoint<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;tmpline.ToPoint = EndPoint<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;pElement.Geometry = tmpline<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;drawline = pElement<br />
&nbsp; &nbsp; End <br />
</span>整个过程关键是要把<span lang="EN-US">element</span>的属性改为<span lang="EN-US">drape</span>，这样画出来的线就是贴着地球表面的，而不会穿过地心，</span></p>
<p><span style="font-size: 10.5pt; font-family: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"><span style="font-size: 10.5pt; font-family: 宋体; mso-fareast-language: ZH-CN; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">在把图层改为<span lang="EN-US">Drape</span>时，加上粘附高度设置就可以将画的线升高，而不被背景图覆盖掉。把代码修改一下，如下：<span lang="EN-US"><br />
pGEP.DrapeElement = True '</span>属性改为<span lang="EN-US">drape<br />
pGEP.DrapeZOffset=1000000 '</span>加上这一句，后面的值表示高度，单位是米</span></span></p>
<img src ="http://www.blogjava.net/mycolby/aggbug/224271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2008-08-25 20:43 <a href="http://www.blogjava.net/mycolby/articles/224271.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>挂在arcmap 上的一个小插件实现 mxd转axl(转载)</title><link>http://www.blogjava.net/mycolby/articles/211884.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Tue, 01 Jul 2008 06:14:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/211884.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/211884.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/211884.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/211884.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/211884.html</trackback:ping><description><![CDATA[<div class="t_msgfont" id="postmessage_277017" twffan="done">挂在arcmap 上的一个小插件实现 mxd转axl，在发布<a onclick="javascript:tagshow(event, '%B5%D8%CD%BC');" href="javascript:;" target="_self"><u><strong>地图</strong></u></a>时候可以在ARCMAP上配丰富颜色和样式，这是在ARCIMS配置程序里没的，但是转出来的代码，只能理由其中的颜色或者样式的小段，<a onclick="javascript:tagshow(event, '%C6%E4%CB%FB');" href="javascript:;" target="_self"><u><strong>其他</strong></u></a>的还要人工修正一下！！喜欢的话大家下一个玩玩！！<br />
<a href="http://arcscripts.esri.com/details.asp?dbid=12766" target="_blank">http://arcscripts.esri.com/details.asp?dbid=12766</a></div>
<img src ="http://www.blogjava.net/mycolby/aggbug/211884.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2008-07-01 14:14 <a href="http://www.blogjava.net/mycolby/articles/211884.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>同一坐标系中，由任意两点计算地图旋转角度(转载)</title><link>http://www.blogjava.net/mycolby/articles/210458.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Wed, 25 Jun 2008 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/210458.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/210458.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/210458.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/210458.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/210458.html</trackback:ping><description><![CDATA[<p style="margin-top: 7.8pt; line-height: 150%"><strong><span style="font-size: 15pt; line-height: 150%; font-family: 宋体">一、引言</span></strong><span style="font-size: 14pt; font-family: 宋体"><span style="font-size: 14pt; line-height: 150%"></p>
<p style="text-indent: 21pt; line-height: 150%"><span style="font-size: 14pt; line-height: 150%">在各种</span><span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: Verdana">GIS/GPS</span><span style="font-size: 14pt; line-height: 150%">应用中，地图旋转是不可或缺的一部分，尤其明显的是用在实时导航，对象跟踪等应用方面。用来计算地图旋转时偏转角的坐标点有动态和静态两种之分。动态在这里指的是在已知当前点的情况下，下一点的具体位置是不确定的；而静态指的是下一点的具体位置是确定的。动态的应用我们常见到的是</span><span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: Verdana">GPS</span><span style="font-size: 14pt; line-height: 150%">导航、游戏中的赛车</span><span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: Verdana">(</span><span style="font-size: 14pt; line-height: 150%">多赛道、可转弯等</span><span lang="EN-US" style="font-size: 14pt; line-height: 150%; font-family: Verdana">)</span><span style="font-size: 14pt; line-height: 150%">以及调度等中的实时地图旋转，而静态更常见的是作为一种功能的演示，如模拟导航，模拟赛车等。地图旋转只有在同一坐标系中进行才有意义，地图旋转角度的计算才有依据，本文主要着重点在于如何由前后两点计算地图旋转角度，同时主要考虑动态的方式，静态方式的旋转地图原理是一样的，就不分开介绍了。</span><span lang="EN-US" style="font-size: 10.5pt; line-height: 150%; font-family: Verdana"><O:P></O:P></span></p>
</span></span>
<p style="margin-top: 7.8pt; line-height: 150%"><strong><span style="font-size: 15pt; line-height: 150%; font-family: 宋体">二、约定和术语</span></strong></p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt"><span style="font-size: 14pt; font-family: Wingdings">&#178;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size: 14pt; font-family: 宋体">参考坐标系</span></strong><span style="font-size: 14pt; font-family: 宋体">：本文所依据的坐标系为北京</span><span style="font-size: 14pt">54</span><span style="font-size: 14pt; font-family: 宋体">下的依据高斯克吕格投影所建立的坐标系，即高斯平面坐标系，它的图像如图：</span><span style="font-size: 14pt"><br />
<br />
<img height="242" alt="" src="http://www.cnblogs.com/images/cnblogs_com/jsjkandy/gs.JPG" width="308" border="0" /><br />
X</span><span style="font-size: 14pt; font-family: 宋体">代表为正北方向，</span><span style="font-size: 14pt">Y</span><span style="font-size: 14pt; font-family: 宋体">代表正东方向，为了使</span><span style="font-size: 14pt">y</span><span style="font-size: 14pt; font-family: 宋体">值都为正，将纵坐标轴西移</span><span style="font-size: 14pt">500km</span><span style="font-size: 14pt; font-family: 宋体">。</span></p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt"><span style="font-size: 14pt; font-family: Wingdings">&#178;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size: 14pt; font-family: 宋体">正切函数</span></strong><span style="font-size: 14pt; font-family: 宋体">是直角三角形中，对边与邻边的比值。放在直角坐标系中（如图）即</span><span style="font-size: 14pt; font-family: Arial"> tan&#952;=y/x</span><span style="font-size: 14pt"><br />
<br />
</span><span style="font-size: 14pt; font-family: 宋体">其中</span><span style="font-size: 14pt; font-family: Arial">tan&#952;</span><span style="font-size: 14pt; font-family: 宋体">的定义域为（</span><span style="font-size: 14pt; font-family: Arial">-</span><span style="font-size: 14pt; font-family: 宋体">&#8719;/2，+&#8719;/2</span><span style="font-size: 14pt; font-family: 宋体">），值域为</span><span style="font-size: 14pt; font-family: Arial">(-</span><span style="font-size: 14pt; font-family: 宋体">&#8734;</span><span style="font-size: 14pt; font-family: Arial">,+</span><span style="font-size: 14pt; font-family: 宋体">&#8734;</span><span style="font-size: 14pt; font-family: Arial">)<br />
<img height="153" alt="" src="http://www.cnblogs.com/images/cnblogs_com/jsjkandy/pingmian.jpg" width="200" border="0" /><br />
</span></p>
<p style="margin: 7.8pt 0cm 10.5pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-size: 8pt; line-height: 150%; font-family: Wingdings">&#178;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size: 14pt; line-height: 150%">偏转角：</span></strong><span style="font-size: 14pt; line-height: 150%">约定偏转角为北偏东的角度，将地图按照偏转角进行旋转后将始终朝着运动方向行驶。在高斯平面坐标系中，正北即为</span><span style="font-size: 14pt; line-height: 150%; font-family: Arial">X</span><span style="font-size: 14pt; line-height: 150%">轴，正东即为</span><span style="font-size: 14pt; line-height: 150%; font-family: Arial">Y</span><span style="font-size: 14pt; line-height: 150%">轴，所以</span><span style="font-size: 14pt; line-height: 150%; font-family: Arial">tan&#952;</span><span style="font-size: 14pt; line-height: 150%">还是为</span><span style="font-size: 14pt; line-height: 150%; font-family: Arial">y/x</span><span style="font-size: 14pt; line-height: 150%">，只是角度的位置有了变化，如图所示。<br />
<img style="width: 341px; height: 314px" height="314" alt="" src="http://www.cnblogs.com/images/cnblogs_com/jsjkandy/gaosi.JPG" width="341" border="0" /><br />
</span></p>
<p style="margin: 7.8pt 0cm 10.5pt 42pt; text-indent: -21pt; line-height: 150%; tab-stops: list 42.0pt"><span style="font-size: 8pt; line-height: 150%; font-family: Wingdings">&#178;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size: 14pt; line-height: 150%">反正切</span></strong><span style="font-size: 14pt; line-height: 150%">：函数</span><span style="font-size: 14pt; line-height: 150%; font-family: Arial">y=tanx</span><span style="font-size: 14pt; line-height: 150%">的反函数叫做反正切函数</span><span style="font-size: 14pt; line-height: 150%; font-family: Arial">,</span><span style="font-size: 14pt; line-height: 150%">记做</span><span style="font-size: 14pt; line-height: 150%; font-family: Arial">:y=arctanx.<br />
</span><span style="font-size: 14pt; line-height: 150%">定义域</span><span style="font-size: 14pt; line-height: 150%; font-family: Arial">:R</span><span style="font-size: 14pt; line-height: 150%">；值域</span><span style="font-size: 14pt; line-height: 150%; font-family: Arial">:(-&#960;/2,&#960;/2)<br />
</span><strong><span style="font-size: 15pt; line-height: 150%; font-family: 宋体">三、计算偏转角</span></strong></p>
<p style="margin-left: 21pt; text-indent: 21pt"><span style="font-size: 14pt; font-family: 宋体">假设存在一起始点</span><span style="font-size: 14pt">pntBegin</span><span style="font-size: 14pt; font-family: 宋体">，并且存在一个原点为</span><span style="font-size: 14pt">pntBegin</span><span style="font-size: 14pt; font-family: 宋体">的平面坐标系，同时约定要旋转的角度为</span><span style="font-size: 14pt">rotateAngle,</span><span style="font-size: 14pt; font-family: 宋体">则下一点</span><span style="font-size: 14pt">pntDest</span><span style="font-size: 14pt; font-family: 宋体">根据方位有几种情况，其示意图如下，我们可以分类进行讨论：<br />
</span><span style="font-size: 14pt"><br />
<img height="570" alt="" src="http://www.cnblogs.com/images/cnblogs_com/jsjkandy/pntnext.JPG" width="670" border="0" /><br />
</span></p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt"><span style="font-size: 14pt; font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: 宋体">若</span><span style="font-size: 14pt">pntDest.x1&gt;=pntBegin.x0,</span><span style="font-size: 14pt; font-family: 宋体">则该点在第一和第四象限，具体对应点为</span><span style="font-size: 14pt">pntDest(1)</span><span style="font-size: 14pt; font-family: 宋体">和</span><span style="font-size: 14pt">pntDest(4),</span><span style="font-size: 14pt; font-family: 宋体">分别对应的北偏东角度为</span><span style="font-size: 14pt; font-family: 宋体">&#945;(1)和&#945;（4），根据Y值的不同，我们又可以分两种情况，</span></p>
<p style="margin-left: 63pt; text-indent: -21pt; tab-stops: list 63.0pt"><span style="font-size: 14pt; font-family: Wingdings">n<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: 宋体">若pntDest.y&gt;=pntBegin.y://在第一象限<br />
rotateAngle=arctan2(fabs(p0.x-p1.x),fabs(p0.y-p1.y));</span></p>
<p style="margin-left: 63pt; text-indent: -21pt; tab-stops: list 63.0pt"><span style="font-size: 14pt; font-family: Wingdings">n<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: 宋体">若pntDest.y&lt;pntBegin.y://在第四象限<br />
rotateAngle=arctan2(fabs(p0.x-p1.x),fabs(p0.y-p1.y));</span><span style="font-size: 14pt"><br />
</span><strong><span style="font-size: 14pt; color: maroon; font-family: 黑体">rotateAngle=</span></strong><strong><span style="font-size: 14pt; color: maroon; font-family: 黑体">&#8719;-</span></strong><strong><span style="font-size: 14pt; color: maroon; font-family: 黑体">rotateAngle;</span></strong></p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt"><span style="font-size: 14pt; font-family: Wingdings">l<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: 宋体">若</span><span style="font-size: 14pt">pntDest.x1&lt;pntBegin.x0,</span><span style="font-size: 14pt; font-family: 宋体">则该点在第二和第三象限，具体对应点为</span><span style="font-size: 14pt">pntDest(2)</span><span style="font-size: 14pt; font-family: 宋体">和</span><span style="font-size: 14pt">pntDest(3),</span><span style="font-size: 14pt; font-family: 宋体">分别对应的北偏东角度为</span><span style="font-size: 14pt; font-family: 宋体">&#945;(2)和&#945;（3），根据Y值的不同，分两种情况进行讨论，</span></p>
<p style="margin-left: 63pt; text-indent: -21pt; tab-stops: list 63.0pt"><span style="font-size: 14pt; font-family: Wingdings">n<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: 宋体">若pntDest.y&gt;=pntBegin.y://在第二象限<br />
rotateAngle=arctan2(fabs(p0.x-p1.x),fabs(p0.y-p1.y));<br />
</span><strong><span style="font-size: 14pt; color: maroon; font-family: 黑体">rotateAngle=</span></strong><strong><span style="font-size: 14pt; color: maroon; font-family: 黑体"> 2*</span></strong><strong><span style="font-size: 14pt; color: maroon; font-family: 黑体">&#8719;-</span></strong><strong><span style="font-size: 14pt; color: maroon; font-family: 黑体">rotateAngle;</span></strong></p>
<p style="margin-left: 63pt; text-indent: -21pt; tab-stops: list 63.0pt"><span style="font-size: 14pt; font-family: Wingdings">n<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt; font-family: 宋体">若pntDest.y&lt;pntBegin.y://在第三象限<br />
rotateAngle=arctan2(fabs(p0.x-p1.x),fabs(p0.y-p1.y));</span><span style="font-size: 14pt"><br />
</span><strong><span style="font-size: 14pt; color: maroon; font-family: 黑体">rotateAngle=</span></strong><strong><span style="font-size: 14pt; color: maroon; font-family: 黑体">&#8719;+</span></strong><strong><span style="font-size: 14pt; color: maroon; font-family: 黑体">rotateAngle;</span></strong></p>
<p style="margin-left: 21pt"><strong><span style="font-size: 15pt; font-family: 宋体">四、在超图平台中实现</span></strong><strong><span style="font-size: 15pt"><br />
</span></strong><strong><span style="font-size: 15pt; font-family: 宋体">注</span></strong><strong><span style="font-weight: normal; font-size: 15pt; font-family: 宋体">：开发语言为</span></strong><strong><span style="font-weight: normal; font-size: 15pt">VC6,</span></strong><strong><span style="font-weight: normal; font-size: 15pt; font-family: 宋体">平台为</span></strong><strong><span style="font-weight: normal; font-size: 15pt">eSuperMap;</span></strong></p>
<p style="margin-left: 21pt"><strong><span style="font-size: 15pt; font-family: 宋体">代码如下：<br />
</p>
<div class="cnblogs_code"><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;CCarNaviView::RotateMap(CPoint&nbsp;pntBegin,CPoint&nbsp;pntNext)<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img id="Codehighlighter1_62_217_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_62_217_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_62_217_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_62_217_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_62_217_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_62_217_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_62_217_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_62_217_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_62_217_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_62_217_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">计算旋转角度</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;dAngle</span><span style="color: #000000">=</span><span style="color: #000000">CalculateRotateAngle(pntBegin,pntNext);<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">地图旋转</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;m_MapWnd.GetDrawParam()</span><span style="color: #000000">-&gt;</span><span style="color: #000000">SetMapRotationAngle(&nbsp;dAngle&nbsp;);<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;m_MapWnd.Refresh();<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img id="Codehighlighter1_219_439_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_219_439_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_219_439_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_219_439_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_219_439_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_219_439_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_219_439_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_219_439_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_219_439_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="Codehighlighter1_219_439_Open_Text"><span style="color: #808080">///</span><span style="color: #008000">&nbsp;\brief&nbsp;由前后两点计算当前地图偏转角并进行地图旋转<br />
</span><span style="color: #008080">12</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;\param&nbsp;pntbegin&nbsp;起始点<br />
</span><span style="color: #008080">13</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;\param&nbsp;pntbegin&nbsp;下一点<br />
</span><span style="color: #008080">14</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;\return&nbsp;地图要旋转的角度(北偏东)<br />
</span><span style="color: #008080">15</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;\remark&nbsp;为适应习惯用法，点坐标的表示方法为cpoint(x,y)，如pntbegin(x,y)代表的含义为：<br />
</span><span style="color: #008080">16</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /></span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;正东，即为高斯投影中的Y，y-&gt;正北，代表高斯投影中的x</span></span><br />
<span style="color: #008080">17</span><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;CCarNaviView::CalculateRotateAngle(CPoint&nbsp;pntBegin,CPoint&nbsp;pntNext)<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img id="Codehighlighter1_513_1062_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_513_1062_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_513_1062_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_513_1062_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_513_1062_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_513_1062_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_513_1062_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_513_1062_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_513_1062_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_513_1062_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CPoint&nbsp;pntFirst(pntBegin);<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CPoint&nbsp;pntSecond(pntNext);<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;dRotateAngle&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;atan2(fabs(pntBegin.x</span><span style="color: #000000">-</span><span style="color: #000000">pntNext.x),fabs(pntBegin.y</span><span style="color: #000000">-</span><span style="color: #000000">pntNext.y));<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">如果下一点的横坐标大于前一点(在第一和第四象限)</span><span style="color: #008000"><br />
</span><span style="color: #008080">25</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(pntNext.x</span><span style="color: #000000">&gt;=</span><span style="color: #000000">pntFirst.x)<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img id="Codehighlighter1_717_879_Open_Image" style="display: inline" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_717_879_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_717_879_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_717_879_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_717_879_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_717_879_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_717_879_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_717_879_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_717_879_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_717_879_Open_Text" style="display: inline"><span style="color: #000000">{<br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在第一象限(0&lt;=dRotateAngle&lt;=90)</span><span style="color: #008000"><br />
</span><span style="color: #008080">28</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(pntNext.y</span><span style="color: #000000">&gt;=</span><span style="color: #000000">pntFirst.y)<br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img id="Codehighlighter1_781_828_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_781_828_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_781_828_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_781_828_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_781_828_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_781_828_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_781_828_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_781_828_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_781_828_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_781_828_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">不做任何处理</span><span style="color: #008000"><br />
</span><span style="color: #008080">31</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dRotateAngle</span><span style="color: #000000">=</span><span style="color: #000000">dRotateAngle;<br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">33</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
</span><span style="color: #008080">34</span><span style="color: #000000"><img id="Codehighlighter1_838_876_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_838_876_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_838_876_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_838_876_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_838_876_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_838_876_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_838_876_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_838_876_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_838_876_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_838_876_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">35</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dRotateAngle</span><span style="color: #000000">=</span><span style="color: #000000">PI</span><span style="color: #000000">-</span><span style="color: #000000">dRotateAngle;<br />
</span><span style="color: #008080">36</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">37</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">38</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #008000">//</span><span style="color: #008000">(在第二和第三象限)</span><span style="color: #008000"><br />
</span><span style="color: #008080">39</span><span style="color: #008000"><img id="Codehighlighter1_899_1038_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_899_1038_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_899_1038_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_899_1038_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_899_1038_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_899_1038_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_899_1038_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_899_1038_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_899_1038_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_899_1038_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">40</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">第二象限</span><span style="color: #008000"><br />
</span><span style="color: #008080">41</span><span style="color: #008000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(pntNext.y</span><span style="color: #000000">&gt;=</span><span style="color: #000000">pntFirst.y)<br />
</span><span style="color: #008080">42</span><span style="color: #000000"><img id="Codehighlighter1_941_981_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_941_981_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_941_981_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_941_981_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_941_981_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_941_981_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_941_981_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_941_981_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_941_981_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_941_981_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">43</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dRotateAngle</span><span style="color: #000000">=</span><span style="color: #800080">2</span><span style="color: #000000">*</span><span style="color: #000000">PI</span><span style="color: #000000">-</span><span style="color: #000000">dRotateAngle;<br />
</span><span style="color: #008080">44</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">45</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #008000">//</span><span style="color: #008000">第三象限</span><span style="color: #008000"><br />
</span><span style="color: #008080">46</span><span style="color: #008000"><img id="Codehighlighter1_997_1035_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_997_1035_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_997_1035_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_997_1035_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_997_1035_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_997_1035_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_997_1035_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_997_1035_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_997_1035_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_997_1035_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">47</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dRotateAngle</span><span style="color: #000000">=</span><span style="color: #000000">PI</span><span style="color: #000000">+</span><span style="color: #000000">dRotateAngle;<br />
</span><span style="color: #008080">48</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">49</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">50</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;dRotateAngle;<br />
</span><span style="color: #008080">51</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
<p style="margin-left: 21pt"><br />
</span></strong></p>
<img src ="http://www.blogjava.net/mycolby/aggbug/210458.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2008-06-25 10:13 <a href="http://www.blogjava.net/mycolby/articles/210458.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GIS网站</title><link>http://www.blogjava.net/mycolby/articles/210443.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Wed, 25 Jun 2008 01:35:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/210443.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/210443.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/210443.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/210443.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/210443.html</trackback:ping><description><![CDATA[http://www.gispark.com<br />
http://www.gisforum.net<br />
http://www.gisempire.com<br />
http://share.gissky.net<br />
http://www.gisbbs.net<br />
http://www.gisuniversity.net<br />
http://gis.cnblogs.com/archive/2005/06/13/173622.aspx?page=1
<img src ="http://www.blogjava.net/mycolby/aggbug/210443.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2008-06-25 09:35 <a href="http://www.blogjava.net/mycolby/articles/210443.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>三维动画轨迹</title><link>http://www.blogjava.net/mycolby/articles/210376.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Tue, 24 Jun 2008 11:50:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/210376.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/210376.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/210376.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/210376.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/210376.html</trackback:ping><description><![CDATA[<p><font size="3">在ArcGIS的接口里，提供了IAnimationTracks，通过它我们可以实现三维动画轨迹的创建，删除或在播放当前轨迹的三维场景效果，进而可以生成三维场景的录像输出处理方法（<font color="#ff0000">这个我在下一篇再给大家介绍</font>），还是看看具体实现代码吧－－</font></p>
<p><font color="#0000ff">&nbsp;&nbsp; /// &lt;summary&gt;<br />
&nbsp;&nbsp; /// 创建动画轨迹<br />
&nbsp;&nbsp; /// &lt;/summary&gt;<br />
&nbsp;&nbsp; public void CreateAnimationTrack( string trackName )<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IAnimationTrack pAnimationTrack = new AnimationTrackClass();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IAnimationType pAnimationType = new AnimationTypeCameraClass();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTrack.AnimationType = pAnimationType;</font></p>
<p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTrack.Name = trackName;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTrack.AttachObject( pSceneGraph.ActiveViewer.Camera );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTrack.ApplyToAllViewers = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTrack.EvenTimeStamps = false;</font></p>
<p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTracks.AddTrack( pAnimationTrack );<br />
&nbsp;&nbsp; }</font></p>
<p><font color="#0000ff">&nbsp;&nbsp; /// &lt;summary&gt;<br />
&nbsp;&nbsp; /// 删除动画轨迹<br />
&nbsp;&nbsp; /// &lt;/summary&gt;<br />
&nbsp;&nbsp; public void RemoveAnimationTrack( string trackName )<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IAnimationTrack pAnimationTrack;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTracks.FindTrack( trackName, out pAnimationTrack );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTracks.RemoveTrack( pAnimationTrack );<br />
&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp; /// &lt;summary&gt;<br />
&nbsp;&nbsp; /// 播放当前动画轨迹<br />
&nbsp;&nbsp; /// &lt;/summary&gt;<br />
&nbsp;&nbsp; public void PlayAnimationTrack( string trackName )<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hashtable htKeyTime = null;</font></p>
<p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool[] TracksEnable = new Boolean[pAnimationTracks.TrackCount];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IAnimationTrack pAnimationTrack;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( int index = 0; index &lt; pAnimationTracks.TrackCount; index++ )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTrack = pAnimationTracks.Tracks.get_Element( index ) as IAnimationTrack;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TracksEnable[index] = pAnimationTrack.IsEnabled;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( pAnimationTrack.Name == trackName )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTrack.IsEnabled = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; htKeyTime = ClsAnimationTracks.GetKeyTimeTable( pAnimationTrack.Name );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTrack.IsEnabled = false;</font></p>
<p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p>
<p><font color="#0000ff">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int sumTime = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach( object obj in htKeyTime.Values )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sumTime += Convert.ToInt32( obj );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p>
<p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double duration = (double)sumTime / 1000;</font></p>
<p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TimeSpan timeSpan;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double elapsedTime;</font></p>
<p><font color="#0000ff">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime startTime = DateTime.Now;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int j = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timeSpan = (DateTime.Now).Subtract(startTime);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elapsedTime = timeSpan.TotalSeconds;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (elapsedTime &gt; duration) elapsedTime = duration;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTracks.ApplyTracks(pSceneGraph.ActiveViewer, elapsedTime, duration);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pSceneGraph.RefreshViewers();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j = j + 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
</font></p>
<p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( int index = 0; index &lt; pAnimationTracks.TrackCount; index++ )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTrack = pAnimationTracks.Tracks.get_Element( index ) as IAnimationTrack;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTrack.IsEnabled = TracksEnable[index];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; }</font></p>
<p><font color="#000000">是不是很<font color="#800080" size="4"><strong>简单</strong></font>呢？记住哟<img src="http://img.baidu.com/hi/face/i_f15.gif"  alt="" />，在播放轨迹的时候，有个时间的处理方法，具体在程序调试时，多试几次就知道是怎么回事了，我就不多说了。。。</font></p>
<p>当然，还有动画帧的处理方法，ArcGIS也提供了一个很方便的接口IKeyframe来实现的，再通过动画轨迹接口IAnimationTrack来实现动画帧的创建，删除等功能，代码实现如下<img src="http://img.baidu.com/hi/face/i_f32.gif"  alt="" />：</p>
<p><font color="#0000ff">&nbsp;&nbsp; /// &lt;summary&gt;<br />
&nbsp;&nbsp; /// 创建动画帧<br />
&nbsp;&nbsp; /// &lt;/summary&gt;<br />
&nbsp;&nbsp; public void CreateKeyFrame( IAnimationTrack pAnimationTrack, string keyName, int timeSpan )<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IKeyframe pKeyframe = new Bookmark3DClass();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pKeyframe.Name = keyName;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pKeyframe.CaptureProperties( pScene, pSceneGraph.ActiveViewer.Camera );</font></p>
<p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTrack.InsertKeyframe( pKeyframe, pAnimationTrack.KeyframeCount );</font></p>
<p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hashtable htKeyTime = ClsAnimationTracks.GetKeyTimeTable( pAnimationTrack.Name );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int sumTime = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach( object obj in htKeyTime.Values )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sumTime += Convert.ToInt32( obj );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p>
<p><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double dblTime = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( int index = 0; index &lt; pAnimationTrack.KeyframeCount; index++ )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pKeyframe = pAnimationTrack.get_Keyframe( index );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dblTime += Convert.ToDouble( htKeyTime[pKeyframe.Name] ) / sumTime;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pKeyframe.TimeStamp = dblTime;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; }</font></p>
<p><font color="#0000ff">&nbsp;&nbsp; /// &lt;summary&gt;<br />
&nbsp;&nbsp; /// 删除动画帧<br />
&nbsp;&nbsp; /// &lt;/summary&gt;<br />
&nbsp;&nbsp; public void RemoveKeyFrame( IAnimationTrack pAnimationTrack, string keyName )<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( int index = 0; index &lt; pAnimationTrack.KeyframeCount; index++ )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( pAnimationTrack.get_Keyframe( index ).Name == keyName )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTrack.RemoveKeyframe( index );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; }</font></p>
<p><font color="#0000ff">&nbsp;&nbsp; /// &lt;summary&gt;<br />
&nbsp;&nbsp; /// 删除当前轨迹的所有帧<br />
&nbsp;&nbsp; /// &lt;/summary&gt;<br />
&nbsp;&nbsp; public void RemoveAllKeyFrame( IAnimationTrack pAnimationTrack )<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pAnimationTrack.RemoveAllKeyframes();&nbsp;&nbsp;<br />
&nbsp;&nbsp; }</font></p>
<img src ="http://www.blogjava.net/mycolby/aggbug/210376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2008-06-24 19:50 <a href="http://www.blogjava.net/mycolby/articles/210376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ArcEngine三维</title><link>http://www.blogjava.net/mycolby/articles/210372.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Tue, 24 Jun 2008 11:35:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/210372.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/210372.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/210372.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/210372.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/210372.html</trackback:ping><description><![CDATA[/*<br />
&nbsp;Copyright 1995-2004 ESRI
<p>&nbsp;All rights reserved under the copyright laws of the United States.</p>
<p>&nbsp;You may freely redistribute and use this sample code, with or without modification.</p>
<p>&nbsp;Disclaimer: THE SAMPLE CODE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED <br />
&nbsp;WARRANTIES, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS <br />
&nbsp;FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ESRI OR <br />
&nbsp;CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, <br />
&nbsp;OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF <br />
&nbsp;SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS <br />
&nbsp;INTERRUPTION) SUSTAINED BY YOU OR A THIRD PARTY, HOWEVER CAUSED AND ON ANY <br />
&nbsp;THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ARISING IN ANY <br />
&nbsp;WAY OUT OF THE USE OF THIS SAMPLE CODE, EVEN IF ADVISED OF THE POSSIBILITY OF <br />
&nbsp;SUCH DAMAGE.</p>
<p>&nbsp;For additional information contact: Environmental Systems Research Institute, Inc.</p>
<p>&nbsp;Attn: Contracts Dept.</p>
<p>&nbsp;380 New York Street</p>
<p>&nbsp;Redlands, California, U.S.A. 92373 </p>
<p>&nbsp;Email: <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#99;&#111;&#110;&#116;&#114;&#97;&#99;&#116;&#115;&#64;&#101;&#115;&#114;&#105;&#46;&#99;&#111;&#109;">contracts@esri.com</a><br />
*/<br />
using System;<br />
using System.Windows.Forms;<br />
using ESRI.ArcGIS.Analyst3D;<br />
using ESRI.ArcGIS.Geometry;<br />
using ESRI.ArcGIS.GlobeCore;<br />
using ESRI.ArcGIS.esriSystem;<br />
using ESRI.ArcGIS.SystemUI;</p>
<p>namespace GlobeNavigation<br />
{<br />
&nbsp;/// &lt;summary&gt;<br />
&nbsp;/// Summary description for Form1.<br />
&nbsp;/// &lt;/summary&gt;<br />
&nbsp;public class Form1 : System.Windows.Forms.Form<br />
&nbsp;{<br />
&nbsp;&nbsp;private ESRI.ArcGIS.GlobeControl.AxGlobeControl axGlobeControl1;<br />
&nbsp;&nbsp;internal System.Windows.Forms.TrackBar TrackBar1;<br />
&nbsp;&nbsp;public System.Windows.Forms.CheckBox chkSpin;<br />
&nbsp;&nbsp;public System.Windows.Forms.RadioButton optTools1;<br />
&nbsp;&nbsp;public System.Windows.Forms.RadioButton optTools0;<br />
&nbsp;&nbsp;public System.Windows.Forms.Button cmdLoadDocument;<br />
&nbsp;&nbsp;public System.Windows.Forms.Button cmdZoomOut;<br />
&nbsp;&nbsp;public System.Windows.Forms.Button cmdZoomIn;<br />
&nbsp;&nbsp;public System.Windows.Forms.Button cmdFullExtent;<br />
&nbsp;&nbsp;public System.Windows.Forms.Label Label1;<br />
&nbsp;&nbsp;public System.Windows.Forms.Label lblNavigate;<br />
&nbsp;&nbsp;public System.Windows.Forms.Label lblZoom;<br />
&nbsp;&nbsp;public System.Windows.Forms.Label lblLoad;<br />
&nbsp;&nbsp;private System.Windows.Forms.OpenFileDialog openFileDialog1;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;private IAoInitialize m_AoInitialize = new AoInitializeClass();<br />
&nbsp;&nbsp;private ISceneViewer m_ActiveView; <br />
&nbsp;&nbsp;private ICamera m_Camera;<br />
&nbsp;&nbsp;private IPoint m_pMousePos = new PointClass();<br />
&nbsp;&nbsp;private bool m_bMouseDown;<br />
&nbsp;&nbsp;private bool m_bZooming = false;<br />
&nbsp;&nbsp;private double m_dSpinSpeed = 0;<br />
&nbsp;&nbsp;private double m_dZoom;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;const double cMinZoom = 1.00002;<br />
&nbsp;&nbsp;const double cMaxZoom = 1.1;<br />
&nbsp;&nbsp;const double cDistanceZoomLimit = 200.0;</p>
<p>&nbsp;&nbsp;/// &lt;summary&gt;<br />
&nbsp;&nbsp;/// Required designer variable.<br />
&nbsp;&nbsp;/// &lt;/summary&gt;<br />
&nbsp;&nbsp;private System.ComponentModel.Container components = null;</p>
<p>&nbsp;&nbsp;public Form1()<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;//<br />
&nbsp;&nbsp;&nbsp;// Required for Windows Form Designer support<br />
&nbsp;&nbsp;&nbsp;//<br />
&nbsp;&nbsp;&nbsp;InitializeComponent();</p>
<p>&nbsp;&nbsp;&nbsp;//<br />
&nbsp;&nbsp;&nbsp;// TODO: Add any constructor code after InitializeComponent call<br />
&nbsp;&nbsp;&nbsp;//<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;/// &lt;summary&gt;<br />
&nbsp;&nbsp;/// Clean up any resources being used.<br />
&nbsp;&nbsp;/// &lt;/summary&gt;<br />
&nbsp;&nbsp;protected override void Dispose( bool disposing )<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if( disposing )<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (components != null) <br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;components.Dispose();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;base.Dispose( disposing );<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;#region Windows Form Designer generated code<br />
&nbsp;&nbsp;/// &lt;summary&gt;<br />
&nbsp;&nbsp;/// Required method for Designer support - do not modify<br />
&nbsp;&nbsp;/// the contents of this method with the code editor.<br />
&nbsp;&nbsp;/// &lt;/summary&gt;<br />
&nbsp;&nbsp;private void InitializeComponent()<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));<br />
&nbsp;&nbsp;&nbsp;this.axGlobeControl1 = new ESRI.ArcGIS.GlobeControl.AxGlobeControl();<br />
&nbsp;&nbsp;&nbsp;this.TrackBar1 = new System.Windows.Forms.TrackBar();<br />
&nbsp;&nbsp;&nbsp;this.chkSpin = new System.Windows.Forms.CheckBox();<br />
&nbsp;&nbsp;&nbsp;this.optTools1 = new System.Windows.Forms.RadioButton();<br />
&nbsp;&nbsp;&nbsp;this.optTools0 = new System.Windows.Forms.RadioButton();<br />
&nbsp;&nbsp;&nbsp;this.cmdLoadDocument = new System.Windows.Forms.Button();<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomOut = new System.Windows.Forms.Button();<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomIn = new System.Windows.Forms.Button();<br />
&nbsp;&nbsp;&nbsp;this.cmdFullExtent = new System.Windows.Forms.Button();<br />
&nbsp;&nbsp;&nbsp;this.Label1 = new System.Windows.Forms.Label();<br />
&nbsp;&nbsp;&nbsp;this.lblNavigate = new System.Windows.Forms.Label();<br />
&nbsp;&nbsp;&nbsp;this.lblZoom = new System.Windows.Forms.Label();<br />
&nbsp;&nbsp;&nbsp;this.lblLoad = new System.Windows.Forms.Label();<br />
&nbsp;&nbsp;&nbsp;this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();<br />
&nbsp;&nbsp;&nbsp;((System.ComponentModel.ISupportInitialize)(this.axGlobeControl1)).BeginInit();<br />
&nbsp;&nbsp;&nbsp;((System.ComponentModel.ISupportInitialize)(this.TrackBar1)).BeginInit();<br />
&nbsp;&nbsp;&nbsp;this.SuspendLayout();<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;// axGlobeControl1<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;this.axGlobeControl1.Location = new System.Drawing.Point(10, 9);<br />
&nbsp;&nbsp;&nbsp;this.axGlobeControl1.Name = "axGlobeControl1";<br />
&nbsp;&nbsp;&nbsp;this.axGlobeControl1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axGlobeControl1.OcxState")));<br />
&nbsp;&nbsp;&nbsp;this.axGlobeControl1.Size = new System.Drawing.Size(508, 499);<br />
&nbsp;&nbsp;&nbsp;this.axGlobeControl1.TabIndex = 0;<br />
&nbsp;&nbsp;&nbsp;this.axGlobeControl1.OnMouseDown += new ESRI.ArcGIS.GlobeControl.IGlobeControlEvents_OnMouseDownEventHandler(this.axGlobeControl1_OnMouseDown);<br />
&nbsp;&nbsp;&nbsp;this.axGlobeControl1.OnMouseMove += new ESRI.ArcGIS.GlobeControl.IGlobeControlEvents_OnMouseMoveEventHandler(this.axGlobeControl1_OnMouseMove);<br />
&nbsp;&nbsp;&nbsp;this.axGlobeControl1.OnMouseUp += new ESRI.ArcGIS.GlobeControl.IGlobeControlEvents_OnMouseUpEventHandler(this.axGlobeControl1_OnMouseUp);<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;// TrackBar1<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;this.TrackBar1.Location = new System.Drawing.Point(528, 465);<br />
&nbsp;&nbsp;&nbsp;this.TrackBar1.Name = "TrackBar1";<br />
&nbsp;&nbsp;&nbsp;this.TrackBar1.Size = new System.Drawing.Size(125, 45);<br />
&nbsp;&nbsp;&nbsp;this.TrackBar1.TabIndex = 26;<br />
&nbsp;&nbsp;&nbsp;this.TrackBar1.Scroll += new System.EventHandler(this.TrackBar1_Scroll);<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;// chkSpin<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;this.chkSpin.BackColor = System.Drawing.SystemColors.Control;<br />
&nbsp;&nbsp;&nbsp;this.chkSpin.Cursor = System.Windows.Forms.Cursors.Default;<br />
&nbsp;&nbsp;&nbsp;this.chkSpin.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));<br />
&nbsp;&nbsp;&nbsp;this.chkSpin.ForeColor = System.Drawing.SystemColors.ControlText;<br />
&nbsp;&nbsp;&nbsp;this.chkSpin.Location = new System.Drawing.Point(547, 439);<br />
&nbsp;&nbsp;&nbsp;this.chkSpin.Name = "chkSpin";<br />
&nbsp;&nbsp;&nbsp;this.chkSpin.RightToLeft = System.Windows.Forms.RightToLeft.No;<br />
&nbsp;&nbsp;&nbsp;this.chkSpin.Size = new System.Drawing.Size(69, 19);<br />
&nbsp;&nbsp;&nbsp;this.chkSpin.TabIndex = 25;<br />
&nbsp;&nbsp;&nbsp;this.chkSpin.Text = "Spin";<br />
&nbsp;&nbsp;&nbsp;this.chkSpin.Click += new System.EventHandler(this.chkSpin_Click);<br />
&nbsp;&nbsp;&nbsp;this.chkSpin.CheckedChanged += new System.EventHandler(this.chkSpin_CheckedChanged);<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;// optTools1<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;this.optTools1.Appearance = System.Windows.Forms.Appearance.Button;<br />
&nbsp;&nbsp;&nbsp;this.optTools1.BackColor = System.Drawing.SystemColors.Control;<br />
&nbsp;&nbsp;&nbsp;this.optTools1.Cursor = System.Windows.Forms.Cursors.Default;<br />
&nbsp;&nbsp;&nbsp;this.optTools1.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));<br />
&nbsp;&nbsp;&nbsp;this.optTools1.ForeColor = System.Drawing.SystemColors.ControlText;<br />
&nbsp;&nbsp;&nbsp;this.optTools1.Location = new System.Drawing.Point(538, 353);<br />
&nbsp;&nbsp;&nbsp;this.optTools1.Name = "optTools1";<br />
&nbsp;&nbsp;&nbsp;this.optTools1.RightToLeft = System.Windows.Forms.RightToLeft.No;<br />
&nbsp;&nbsp;&nbsp;this.optTools1.Size = new System.Drawing.Size(97, 27);<br />
&nbsp;&nbsp;&nbsp;this.optTools1.TabIndex = 20;<br />
&nbsp;&nbsp;&nbsp;this.optTools1.TabStop = true;<br />
&nbsp;&nbsp;&nbsp;this.optTools1.Text = "Zoom In/Out";<br />
&nbsp;&nbsp;&nbsp;this.optTools1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;<br />
&nbsp;&nbsp;&nbsp;this.optTools1.Click += new System.EventHandler(this.MixedControls_Click);<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;// optTools0<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;this.optTools0.Appearance = System.Windows.Forms.Appearance.Button;<br />
&nbsp;&nbsp;&nbsp;this.optTools0.BackColor = System.Drawing.SystemColors.Control;<br />
&nbsp;&nbsp;&nbsp;this.optTools0.Cursor = System.Windows.Forms.Cursors.Default;<br />
&nbsp;&nbsp;&nbsp;this.optTools0.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));<br />
&nbsp;&nbsp;&nbsp;this.optTools0.ForeColor = System.Drawing.SystemColors.ControlText;<br />
&nbsp;&nbsp;&nbsp;this.optTools0.Location = new System.Drawing.Point(538, 310);<br />
&nbsp;&nbsp;&nbsp;this.optTools0.Name = "optTools0";<br />
&nbsp;&nbsp;&nbsp;this.optTools0.RightToLeft = System.Windows.Forms.RightToLeft.No;<br />
&nbsp;&nbsp;&nbsp;this.optTools0.Size = new System.Drawing.Size(97, 27);<br />
&nbsp;&nbsp;&nbsp;this.optTools0.TabIndex = 19;<br />
&nbsp;&nbsp;&nbsp;this.optTools0.TabStop = true;<br />
&nbsp;&nbsp;&nbsp;this.optTools0.Text = "Navigate";<br />
&nbsp;&nbsp;&nbsp;this.optTools0.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;<br />
&nbsp;&nbsp;&nbsp;this.optTools0.Click += new System.EventHandler(this.MixedControls_Click);<br />
&nbsp;&nbsp;&nbsp;this.optTools0.CheckedChanged += new System.EventHandler(this.optTools0_CheckedChanged);<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;// cmdLoadDocument<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;this.cmdLoadDocument.BackColor = System.Drawing.SystemColors.Control;<br />
&nbsp;&nbsp;&nbsp;this.cmdLoadDocument.Cursor = System.Windows.Forms.Cursors.Default;<br />
&nbsp;&nbsp;&nbsp;this.cmdLoadDocument.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));<br />
&nbsp;&nbsp;&nbsp;this.cmdLoadDocument.ForeColor = System.Drawing.SystemColors.ControlText;<br />
&nbsp;&nbsp;&nbsp;this.cmdLoadDocument.Location = new System.Drawing.Point(547, 52);<br />
&nbsp;&nbsp;&nbsp;this.cmdLoadDocument.Name = "cmdLoadDocument";<br />
&nbsp;&nbsp;&nbsp;this.cmdLoadDocument.RightToLeft = System.Windows.Forms.RightToLeft.No;<br />
&nbsp;&nbsp;&nbsp;this.cmdLoadDocument.Size = new System.Drawing.Size(81, 27);<br />
&nbsp;&nbsp;&nbsp;this.cmdLoadDocument.TabIndex = 18;<br />
&nbsp;&nbsp;&nbsp;this.cmdLoadDocument.Text = "Load ...";<br />
&nbsp;&nbsp;&nbsp;this.cmdLoadDocument.Click += new System.EventHandler(this.cmdLoadDocument_Click);<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;// cmdZoomOut<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;this.cmdZoomOut.BackColor = System.Drawing.SystemColors.Control;<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomOut.Cursor = System.Windows.Forms.Cursors.Default;<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomOut.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomOut.ForeColor = System.Drawing.SystemColors.ControlText;<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomOut.Location = new System.Drawing.Point(528, 181);<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomOut.Name = "cmdZoomOut";<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomOut.RightToLeft = System.Windows.Forms.RightToLeft.No;<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomOut.Size = new System.Drawing.Size(119, 27);<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomOut.TabIndex = 17;<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomOut.Text = "Fixed Zoom Out";<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomOut.Click += new System.EventHandler(this.cmdZoomOut_Click);<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;// cmdZoomIn<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;this.cmdZoomIn.BackColor = System.Drawing.SystemColors.Control;<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomIn.Cursor = System.Windows.Forms.Cursors.Default;<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomIn.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomIn.ForeColor = System.Drawing.SystemColors.ControlText;<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomIn.Location = new System.Drawing.Point(528, 146);<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomIn.Name = "cmdZoomIn";<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomIn.RightToLeft = System.Windows.Forms.RightToLeft.No;<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomIn.Size = new System.Drawing.Size(119, 27);<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomIn.TabIndex = 16;<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomIn.Text = "Fixed Zoom In";<br />
&nbsp;&nbsp;&nbsp;this.cmdZoomIn.Click += new System.EventHandler(this.cmdZoomIn_Click);<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;// cmdFullExtent<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;this.cmdFullExtent.BackColor = System.Drawing.SystemColors.Control;<br />
&nbsp;&nbsp;&nbsp;this.cmdFullExtent.Cursor = System.Windows.Forms.Cursors.Default;<br />
&nbsp;&nbsp;&nbsp;this.cmdFullExtent.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));<br />
&nbsp;&nbsp;&nbsp;this.cmdFullExtent.ForeColor = System.Drawing.SystemColors.ControlText;<br />
&nbsp;&nbsp;&nbsp;this.cmdFullExtent.Location = new System.Drawing.Point(528, 215);<br />
&nbsp;&nbsp;&nbsp;this.cmdFullExtent.Name = "cmdFullExtent";<br />
&nbsp;&nbsp;&nbsp;this.cmdFullExtent.RightToLeft = System.Windows.Forms.RightToLeft.No;<br />
&nbsp;&nbsp;&nbsp;this.cmdFullExtent.Size = new System.Drawing.Size(119, 27);<br />
&nbsp;&nbsp;&nbsp;this.cmdFullExtent.TabIndex = 15;<br />
&nbsp;&nbsp;&nbsp;this.cmdFullExtent.Text = "Full Extent";<br />
&nbsp;&nbsp;&nbsp;this.cmdFullExtent.Click += new System.EventHandler(this.cmdFullExtent_Click);<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;// Label1<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;this.Label1.BackColor = System.Drawing.SystemColors.Control;<br />
&nbsp;&nbsp;&nbsp;this.Label1.Cursor = System.Windows.Forms.Cursors.Default;<br />
&nbsp;&nbsp;&nbsp;this.Label1.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));<br />
&nbsp;&nbsp;&nbsp;this.Label1.ForeColor = System.Drawing.SystemColors.Highlight;<br />
&nbsp;&nbsp;&nbsp;this.Label1.Location = new System.Drawing.Point(528, 388);<br />
&nbsp;&nbsp;&nbsp;this.Label1.Name = "Label1";<br />
&nbsp;&nbsp;&nbsp;this.Label1.RightToLeft = System.Windows.Forms.RightToLeft.No;<br />
&nbsp;&nbsp;&nbsp;this.Label1.Size = new System.Drawing.Size(116, 52);<br />
&nbsp;&nbsp;&nbsp;this.Label1.TabIndex = 24;<br />
&nbsp;&nbsp;&nbsp;this.Label1.Text = "Control the spin speed with the slider.";<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;// lblNavigate<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;this.lblNavigate.BackColor = System.Drawing.SystemColors.Control;<br />
&nbsp;&nbsp;&nbsp;this.lblNavigate.Cursor = System.Windows.Forms.Cursors.Default;<br />
&nbsp;&nbsp;&nbsp;this.lblNavigate.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));<br />
&nbsp;&nbsp;&nbsp;this.lblNavigate.ForeColor = System.Drawing.SystemColors.Highlight;<br />
&nbsp;&nbsp;&nbsp;this.lblNavigate.Location = new System.Drawing.Point(528, 250);<br />
&nbsp;&nbsp;&nbsp;this.lblNavigate.Name = "lblNavigate";<br />
&nbsp;&nbsp;&nbsp;this.lblNavigate.RightToLeft = System.Windows.Forms.RightToLeft.No;<br />
&nbsp;&nbsp;&nbsp;this.lblNavigate.Size = new System.Drawing.Size(126, 53);<br />
&nbsp;&nbsp;&nbsp;this.lblNavigate.TabIndex = 23;<br />
&nbsp;&nbsp;&nbsp;this.lblNavigate.Text = "Use the option buttons to select a navigation tool. ";<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;// lblZoom<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;this.lblZoom.BackColor = System.Drawing.SystemColors.Control;<br />
&nbsp;&nbsp;&nbsp;this.lblZoom.Cursor = System.Windows.Forms.Cursors.Default;<br />
&nbsp;&nbsp;&nbsp;this.lblZoom.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));<br />
&nbsp;&nbsp;&nbsp;this.lblZoom.ForeColor = System.Drawing.SystemColors.Highlight;<br />
&nbsp;&nbsp;&nbsp;this.lblZoom.Location = new System.Drawing.Point(528, 86);<br />
&nbsp;&nbsp;&nbsp;this.lblZoom.Name = "lblZoom";<br />
&nbsp;&nbsp;&nbsp;this.lblZoom.RightToLeft = System.Windows.Forms.RightToLeft.No;<br />
&nbsp;&nbsp;&nbsp;this.lblZoom.Size = new System.Drawing.Size(125, 53);<br />
&nbsp;&nbsp;&nbsp;this.lblZoom.TabIndex = 22;<br />
&nbsp;&nbsp;&nbsp;this.lblZoom.Text = "Use the buttons to naviagte the Globe data.";<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;// lblLoad<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;this.lblLoad.BackColor = System.Drawing.SystemColors.Control;<br />
&nbsp;&nbsp;&nbsp;this.lblLoad.Cursor = System.Windows.Forms.Cursors.Default;<br />
&nbsp;&nbsp;&nbsp;this.lblLoad.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));<br />
&nbsp;&nbsp;&nbsp;this.lblLoad.ForeColor = System.Drawing.SystemColors.Highlight;<br />
&nbsp;&nbsp;&nbsp;this.lblLoad.Location = new System.Drawing.Point(528, 9);<br />
&nbsp;&nbsp;&nbsp;this.lblLoad.Name = "lblLoad";<br />
&nbsp;&nbsp;&nbsp;this.lblLoad.RightToLeft = System.Windows.Forms.RightToLeft.No;<br />
&nbsp;&nbsp;&nbsp;this.lblLoad.Size = new System.Drawing.Size(116, 35);<br />
&nbsp;&nbsp;&nbsp;this.lblLoad.TabIndex = 21;<br />
&nbsp;&nbsp;&nbsp;this.lblLoad.Text = "Browse to a 3dd file to load.";<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;// Form1<br />
&nbsp;&nbsp;&nbsp;// <br />
&nbsp;&nbsp;&nbsp;this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);<br />
&nbsp;&nbsp;&nbsp;this.ClientSize = new System.Drawing.Size(662, 514);<br />
&nbsp;&nbsp;&nbsp;this.Controls.Add(this.TrackBar1);<br />
&nbsp;&nbsp;&nbsp;this.Controls.Add(this.chkSpin);<br />
&nbsp;&nbsp;&nbsp;this.Controls.Add(this.optTools1);<br />
&nbsp;&nbsp;&nbsp;this.Controls.Add(this.optTools0);<br />
&nbsp;&nbsp;&nbsp;this.Controls.Add(this.cmdLoadDocument);<br />
&nbsp;&nbsp;&nbsp;this.Controls.Add(this.cmdZoomOut);<br />
&nbsp;&nbsp;&nbsp;this.Controls.Add(this.cmdZoomIn);<br />
&nbsp;&nbsp;&nbsp;this.Controls.Add(this.cmdFullExtent);<br />
&nbsp;&nbsp;&nbsp;this.Controls.Add(this.Label1);<br />
&nbsp;&nbsp;&nbsp;this.Controls.Add(this.lblNavigate);<br />
&nbsp;&nbsp;&nbsp;this.Controls.Add(this.lblZoom);<br />
&nbsp;&nbsp;&nbsp;this.Controls.Add(this.lblLoad);<br />
&nbsp;&nbsp;&nbsp;this.Controls.Add(this.axGlobeControl1);<br />
&nbsp;&nbsp;&nbsp;this.Name = "Form1";<br />
&nbsp;&nbsp;&nbsp;this.Text = "Form1";<br />
&nbsp;&nbsp;&nbsp;this.Closing += new System.ComponentModel.CancelEventHandler(this.Form1_Closing);<br />
&nbsp;&nbsp;&nbsp;this.Load += new System.EventHandler(this.Form1_Load);<br />
&nbsp;&nbsp;&nbsp;((System.ComponentModel.ISupportInitialize)(this.axGlobeControl1)).EndInit();<br />
&nbsp;&nbsp;&nbsp;((System.ComponentModel.ISupportInitialize)(this.TrackBar1)).EndInit();<br />
&nbsp;&nbsp;&nbsp;this.ResumeLayout(false);</p>
<p>&nbsp;&nbsp;}<br />
&nbsp;&nbsp;#endregion</p>
<p>&nbsp;&nbsp;/// &lt;summary&gt;<br />
&nbsp;&nbsp;/// The main entry point for the application.<br />
&nbsp;&nbsp;/// &lt;/summary&gt;<br />
&nbsp;&nbsp;[STAThread]<br />
&nbsp;&nbsp;static void Main() <br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;Application.Run(new Form1());<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;private void Form1_Load(object sender, System.EventArgs e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;//Create a new AoInitialize object<br />
&nbsp;&nbsp;&nbsp;if (m_AoInitialize == null)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;//System.Windows.Forms.MessageBox.Show("Unable to initialize. This application cannot run!");<br />
&nbsp;&nbsp;&nbsp;&nbsp;this.Close();<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;//Determine if the product and 3D extension are available<br />
&nbsp;&nbsp;&nbsp;esriLicenseStatus licenseStatus = (esriLicenseStatus) m_AoInitialize.IsProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeEngine);<br />
&nbsp;&nbsp;&nbsp;if (licenseStatus == esriLicenseStatus.esriLicenseAvailable)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;licenseStatus = (esriLicenseStatus) m_AoInitialize.IsExtensionCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeEngine, esriLicenseExtensionCode.esriLicenseExtensionCode3DAnalyst);<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (licenseStatus == esriLicenseStatus.esriLicenseAvailable)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;licenseStatus = (esriLicenseStatus) m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (licenseStatus != esriLicenseStatus.esriLicenseCheckedOut)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//System.Windows.Forms.MessageBox.Show("The initialization failed. This application cannot run!");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;licenseStatus = (esriLicenseStatus) m_AoInitialize.CheckOutExtension(esriLicenseExtensionCode.esriLicenseExtensionCode3DAnalyst);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (licenseStatus != esriLicenseStatus.esriLicenseCheckedOut) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Windows.Forms.MessageBox.Show("Unable to check out the 3D Analyst extension. This application cannot run!");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else&nbsp;<br />
&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.Windows.Forms.MessageBox.Show("The ArcGIS Engine product is unavailable. This application cannot run!");<br />
&nbsp;&nbsp;&nbsp;&nbsp;this.Close();<br />
&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;//Initialize member variables<br />
&nbsp;&nbsp;&nbsp;m_ActiveView = axGlobeControl1.GlobeDisplay.ActiveViewer;<br />
&nbsp;&nbsp;&nbsp;m_Camera = m_ActiveView.Camera;<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;private void cmdLoadDocument_Click(object sender, System.EventArgs e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;//Open a file dialog for selecting map documents<br />
&nbsp;&nbsp;&nbsp;openFileDialog1.Title = "Globe Documents";<br />
&nbsp;&nbsp;&nbsp;openFileDialog1.DefaultExt = ".3dd";<br />
&nbsp;&nbsp;&nbsp;openFileDialog1.Filter = "Globe Document(*.3dd)|*.3dd";<br />
&nbsp;&nbsp;&nbsp;openFileDialog1.ShowDialog();</p>
<p>&nbsp;&nbsp;&nbsp;//Check a file is selected and that it's a valid Globe document<br />
&nbsp;&nbsp;&nbsp;//before attempting to load it<br />
&nbsp;&nbsp;&nbsp;if (openFileDialog1.FileName != "")<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (axGlobeControl1.Check3dFile(openFileDialog1.FileName) == true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;axGlobeControl1.Load3dFile(openFileDialog1.FileName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox.Show("Cannot load " + openFileDialog1.FileName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;private void cmdFullExtent_Click(object sender, System.EventArgs e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;<a name="baidusnap1"></a><strong style="color: black; background-color: #a0ffff">IGlobeCamera</strong> camera = (<strong style="color: black; background-color: #a0ffff">IGlobeCamera</strong>) m_Camera;</p>
<p>&nbsp;&nbsp;&nbsp;//Make sure that the camera is using global coordinates<br />
&nbsp;&nbsp;&nbsp;camera.OrientationMode = esriGlobeCameraOrientationMode.esriGlobeCameraOrientationGlobal;</p>
<p>&nbsp;&nbsp;&nbsp;//Point the camera at 0,0 in lat,long - this is the default target<br />
&nbsp;&nbsp;&nbsp;IPoint target = new PointClass();<br />
&nbsp;&nbsp;&nbsp;target.PutCoords(0.0,0.0);<br />
&nbsp;&nbsp;&nbsp;target.Z = 0.0;<br />
&nbsp;&nbsp;&nbsp;m_Camera.Target = target;</p>
<p>&nbsp;&nbsp;&nbsp;//Reset the camera to its default values<br />
&nbsp;&nbsp;&nbsp;m_Camera.<a name="baidusnap2"></a><strong style="color: black; background-color: #99ff99">Azimuth</strong> = 140;<br />
&nbsp;&nbsp;&nbsp;m_Camera.Inclination = 45;<br />
&nbsp;&nbsp;&nbsp;m_Camera.ViewingDistance = 4.0;<br />
&nbsp;&nbsp;&nbsp;m_Camera.ViewFieldAngle = 30.0;<br />
&nbsp;&nbsp;&nbsp;m_Camera.RollAngle = 0.0;<br />
&nbsp;&nbsp;&nbsp;m_Camera.RecalcUp();<br />
&nbsp;&nbsp;&nbsp;m_ActiveView.Redraw(false);<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;private void cmdZoomIn_Click(object sender, System.EventArgs e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;//Reset the camera field of view angle to 0.9 of its previous value<br />
&nbsp;&nbsp;&nbsp;double vfa = m_Camera.ViewFieldAngle;<br />
&nbsp;&nbsp;&nbsp;m_Camera.ViewFieldAngle = vfa * 0.9;<br />
&nbsp;&nbsp;&nbsp;m_ActiveView.Redraw(false);<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;private void cmdZoomOut_Click(object sender, System.EventArgs e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;//Reset the camera field of view angle to 1.1 times its previous value<br />
&nbsp;&nbsp;&nbsp;double vfa = m_Camera.ViewFieldAngle;<br />
&nbsp;&nbsp;&nbsp;m_Camera.ViewFieldAngle = vfa * 1.1;<br />
&nbsp;&nbsp;&nbsp;m_ActiveView.Redraw(false);<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;private void CalculateMoveFactors(double dist)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;bool bIsAtCenter;<br />
&nbsp;&nbsp;&nbsp;int indexGlobe;</p>
<p>&nbsp;&nbsp;&nbsp;//See if the camera is pointing at the center of the globe.<br />
&nbsp;&nbsp;&nbsp;IGlobeViewer globeViewer = (IGlobeViewer) m_ActiveView;<br />
&nbsp;&nbsp;&nbsp;globeViewer.GetIsTargetAtCenter(out bIsAtCenter, out indexGlobe);</p>
<p>&nbsp;&nbsp;&nbsp;//If the camera is pointing at the center of the globe then the zoom speed<br />
&nbsp;&nbsp;&nbsp;//depends on how far away it is, otherwise the zoom factor is fixed. As the<br />
&nbsp;&nbsp;&nbsp;//camera approaches the globe surface (where dist = 1) the zoom speed slows<br />
&nbsp;&nbsp;&nbsp;//down. The other factors were worked out by trial and error.<br />
&nbsp;&nbsp;&nbsp;if (bIsAtCenter == true)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;m_dZoom = cMinZoom + (cMaxZoom - cMinZoom) * (dist - 1.0 / 3.0);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;m_dZoom = 1.1;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;//Release COM objects, check in extension and shutdown<br />
&nbsp;&nbsp;&nbsp;ESRI.ArcGIS.Utility.COMSupport.AOUninitialize.Shutdown();<br />
&nbsp;&nbsp;&nbsp;m_AoInitialize.CheckInExtension(esriLicenseExtensionCode.esriLicenseExtensionCode3DAnalyst);<br />
&nbsp;&nbsp;&nbsp;m_AoInitialize.Shutdown();<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;private void axGlobeControl1_OnMouseDown(object sender, ESRI.ArcGIS.GlobeControl.IGlobeControlEvents_OnMouseDownEvent e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;//Mouse down should initiate a zoom only if the Zoom check box is checked<br />
&nbsp;&nbsp;&nbsp;if (m_bZooming == false)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;if (e.button == 1)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;m_bMouseDown = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;m_pMousePos.X = e.x;<br />
&nbsp;&nbsp;&nbsp;&nbsp;m_pMousePos.Y = e.y;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;private void axGlobeControl1_OnMouseUp(object sender, ESRI.ArcGIS.GlobeControl.IGlobeControlEvents_OnMouseUpEvent e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;//Cancel the zoom operation<br />
&nbsp;&nbsp;&nbsp;m_bMouseDown = false;<br />
&nbsp;&nbsp;&nbsp;//Navigate can cancel spin - make sure it starts again<br />
&nbsp;&nbsp;&nbsp;if (m_dSpinSpeed &gt; 0)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;axGlobeControl1.GlobeViewer.StartSpinning(esriGlobeSpinDirection.esriCounterClockwise);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;private void axGlobeControl1_OnMouseMove(object sender, ESRI.ArcGIS.GlobeControl.IGlobeControlEvents_OnMouseMoveEvent e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if (m_bMouseDown == false)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;//If we're in a zoom operation then<br />
&nbsp;&nbsp;&nbsp;//Get the difference in mouse position between this and the last one<br />
&nbsp;&nbsp;&nbsp;double dx = e.x - m_pMousePos.X;<br />
&nbsp;&nbsp;&nbsp;double dy = e.y - m_pMousePos.Y;<br />
&nbsp;&nbsp;&nbsp;if ((dx == 0) &amp; (dy == 0)) <br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;return;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;//Work out how far the observer is currently from the globe and use this<br />
&nbsp;&nbsp;&nbsp;//distance to determine how far to move<br />
&nbsp;&nbsp;&nbsp;IPoint observer = m_Camera.Observer;<br />
&nbsp;&nbsp;&nbsp;double zObs;<br />
&nbsp;&nbsp;&nbsp;double xObs; <br />
&nbsp;&nbsp;&nbsp;double yObs;<br />
&nbsp;&nbsp;&nbsp;double dist; <br />
&nbsp;&nbsp;&nbsp;observer.QueryCoords(out xObs, out yObs);<br />
&nbsp;&nbsp;&nbsp;zObs = observer.Z;<br />
&nbsp;&nbsp;&nbsp;dist = System.Math.Sqrt(xObs * xObs + yObs * yObs + zObs * zObs);<br />
&nbsp;&nbsp;&nbsp;CalculateMoveFactors(dist);</p>
<p>&nbsp;&nbsp;&nbsp;//Zoom out and in as the mouse moves up and down the screen respectively<br />
&nbsp;&nbsp;&nbsp;if ((dy &lt; 0) &amp; (dist &lt; cDistanceZoomLimit)) <br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;m_Camera.Zoom(m_dZoom);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else if (dy &gt; 0) <br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;m_Camera.Zoom((1 / m_dZoom));<br />
&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;m_pMousePos.X = e.x;<br />
&nbsp;&nbsp;&nbsp;m_pMousePos.Y = e.y;<br />
&nbsp;&nbsp;&nbsp;m_ActiveView.Redraw(false);<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;private void chkSpin_Click(object sender, System.EventArgs e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if (chkSpin.CheckState == CheckState.Checked)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;axGlobeControl1.GlobeViewer.StartSpinning(esriGlobeSpinDirection.esriCounterClockwise);<br />
&nbsp;&nbsp;&nbsp;&nbsp;axGlobeControl1.GlobeViewer.SpinSpeed = 3;<br />
&nbsp;&nbsp;&nbsp;&nbsp;TrackBar1.Enabled = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;m_dSpinSpeed = 3;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;axGlobeControl1.GlobeViewer.StopSpinning();<br />
&nbsp;&nbsp;&nbsp;&nbsp;TrackBar1.Enabled = false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;m_dSpinSpeed = 0;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;private void TrackBar1_Scroll(object sender, System.EventArgs e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;//The globe should increase its spin speed with every increment greater than<br />
&nbsp;&nbsp;&nbsp;//5 and decrease it for every increment less.<br />
&nbsp;&nbsp;&nbsp;int sliderPos = (TrackBar1.Value - 5);<br />
&nbsp;&nbsp;&nbsp;if (sliderPos == 0)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;m_dSpinSpeed = 3;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else if (sliderPos &gt; 0) <br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;m_dSpinSpeed = 3 * (sliderPos + 1);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;m_dSpinSpeed = 3 / (1 - sliderPos);<br />
&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;axGlobeControl1.GlobeViewer.SpinSpeed = m_dSpinSpeed;<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;private void MixedControls_Click(object sender, System.EventArgs e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;RadioButton b = (RadioButton) sender;<br />
&nbsp;&nbsp;&nbsp;//Set current tool<br />
&nbsp;&nbsp;&nbsp;switch (b.Name)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;case "optTools0":<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_bZooming = false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;axGlobeControl1.Navigate = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;axGlobeControl1.MousePointer = esriControlsMousePointer.esriPointerDefault;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;case "optTools1":<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_bZooming = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;axGlobeControl1.Navigate = false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;axGlobeControl1.MousePointer = esriControlsMousePointer.esriPointerZoom;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;private void optTools0_CheckedChanged(object sender, System.EventArgs e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;private void chkSpin_CheckedChanged(object sender, System.EventArgs e)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;}<br />
&nbsp;}<br />
}<br />
</p>
<img src ="http://www.blogjava.net/mycolby/aggbug/210372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2008-06-24 19:35 <a href="http://www.blogjava.net/mycolby/articles/210372.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>arcIMS如何实现多边形选择</title><link>http://www.blogjava.net/mycolby/articles/205570.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Tue, 03 Jun 2008 07:30:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/205570.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/205570.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/205570.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/205570.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/205570.html</trackback:ping><description><![CDATA[<p><img id="Codehighlighter1_45_3847_Open_Image" onclick="this.style.display='none'; Codehighlighter1_45_3847_Open_Text.style.display='none'; Codehighlighter1_45_3847_Closed_Image.style.display='inline'; Codehighlighter1_45_3847_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_45_3847_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_45_3847_Closed_Text.style.display='none'; Codehighlighter1_45_3847_Open_Image.style.display='inline'; Codehighlighter1_45_3847_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;RectSelectAction&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;Action&nbsp;</span><span id="Codehighlighter1_45_3847_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_45_3847_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;---------------------------------------------------------&nbsp;Instance<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Variables<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;---------------------------------------------------------&nbsp;Methods</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img id="Codehighlighter1_206_337_Open_Image" onclick="this.style.display='none'; Codehighlighter1_206_337_Open_Text.style.display='none'; Codehighlighter1_206_337_Closed_Image.style.display='inline'; Codehighlighter1_206_337_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_206_337_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_206_337_Closed_Text.style.display='none'; Codehighlighter1_206_337_Open_Image.style.display='inline'; Codehighlighter1_206_337_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_206_337_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_206_337_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Method&nbsp;execute<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;mapping<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;form<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;request<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;response<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000">&nbsp;ActionForward<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;ActionForward&nbsp;execute(ActionMapping&nbsp;mapping,&nbsp;ActionForm&nbsp;form,<br />
<img id="Codehighlighter1_470_2860_Open_Image" onclick="this.style.display='none'; Codehighlighter1_470_2860_Open_Text.style.display='none'; Codehighlighter1_470_2860_Closed_Image.style.display='inline'; Codehighlighter1_470_2860_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_470_2860_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_470_2860_Closed_Text.style.display='none'; Codehighlighter1_470_2860_Open_Image.style.display='inline'; Codehighlighter1_470_2860_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)&nbsp;</span><span id="Codehighlighter1_470_2860_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_470_2860_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DynaActionForm&nbsp;rectSelectForm&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(DynaActionForm)&nbsp;form;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;startx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;rectSelectForm.getString(</span><span style="color: #000000">"</span><span style="color: #000000">startx</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;starty&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;rectSelectForm.getString(</span><span style="color: #000000">"</span><span style="color: #000000">starty</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;endx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;rectSelectForm.getString(</span><span style="color: #000000">"</span><span style="color: #000000">endx</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;endy&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;rectSelectForm.getString(</span><span style="color: #000000">"</span><span style="color: #000000">endy</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map&nbsp;map&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(Map)&nbsp;request.getSession().getAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">THEMAP</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Polygon&nbsp;polygon&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.creatPolygon(map,&nbsp;startx,&nbsp;starty,&nbsp;endx,&nbsp;endy);<br />
<img id="Codehighlighter1_895_1137_Open_Image" onclick="this.style.display='none'; Codehighlighter1_895_1137_Open_Text.style.display='none'; Codehighlighter1_895_1137_Closed_Image.style.display='inline'; Codehighlighter1_895_1137_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_895_1137_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_895_1137_Closed_Text.style.display='none'; Codehighlighter1_895_1137_Open_Image.style.display='inline'; Codehighlighter1_895_1137_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(polygon&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_895_1137_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_895_1137_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ActionMessages&nbsp;msgs&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ActionMessages();<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msgs.add(ActionMessages.GLOBAL_MESSAGE,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ActionMessage(<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">com.suzhou.message.createPolygonFail</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.saveMessages(request,&nbsp;msgs);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;mapping.findForward(</span><span style="color: #000000">"</span><span style="color: #000000">resultPage</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FeatureLayer&nbsp;menpaiLayer&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
<img id="Codehighlighter1_1229_1446_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1229_1446_Open_Text.style.display='none'; Codehighlighter1_1229_1446_Closed_Image.style.display='inline'; Codehighlighter1_1229_1446_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1229_1446_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1229_1446_Closed_Text.style.display='none'; Codehighlighter1_1229_1446_Open_Image.style.display='inline'; Codehighlighter1_1229_1446_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;map.getLayers().getCount();&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_1229_1446_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1229_1446_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_1287_1442_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1287_1442_Open_Text.style.display='none'; Codehighlighter1_1287_1442_Closed_Image.style.display='inline'; Codehighlighter1_1287_1442_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1287_1442_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1287_1442_Closed_Text.style.display='none'; Codehighlighter1_1287_1442_Open_Image.style.display='inline'; Codehighlighter1_1287_1442_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(map.getLayers().item(i).getName().equals(</span><span style="color: #000000">"</span><span style="color: #000000">地物点</span><span style="color: #000000">"</span><span style="color: #000000">))&nbsp;</span><span id="Codehighlighter1_1287_1442_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1287_1442_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menpaiLayer&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(FeatureLayer)&nbsp;map.getLayers().item(i);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(menpaiLayer.getName());<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(menpaiLayer.getID());<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_1475_1721_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1475_1721_Open_Text.style.display='none'; Codehighlighter1_1475_1721_Closed_Image.style.display='inline'; Codehighlighter1_1475_1721_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1475_1721_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1475_1721_Closed_Text.style.display='none'; Codehighlighter1_1475_1721_Open_Image.style.display='inline'; Codehighlighter1_1475_1721_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(menpaiLayer&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_1475_1721_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1475_1721_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ActionMessages&nbsp;msgs&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ActionMessages();<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msgs.add(ActionMessages.GLOBAL_MESSAGE,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ActionMessage(<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">com.suzhou.message.layerNotExsist</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">地物点</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.saveMessages(request,&nbsp;msgs);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;mapping.findForward(</span><span style="color: #000000">"</span><span style="color: #000000">resultPage</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.getLayers().setGeometry(</span><span style="color: #0000ff">true</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;设置返回空间信息</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menpaiLayer.getRecordset().clearRecordset();<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menpaiLayer.getRecordset().clearEnvelope();<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menpaiLayer.getRecordset().clearGeometry();<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.getLayers().setOrder(</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menpaiLayer.setFilterObject(</span><span style="color: #0000ff">null</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Filter&nbsp;filter2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Filter();<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filter2.addSubField("BLOCKNAME");<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filter2.addSubField("MPNUM");<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filter2.addSubField("MPABNAME");<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filter2.addSubField("MPSUBNUM");<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">filter2.setWhereExpression("");</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filter2.setGlobalEnvelope(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filter2.setSpatialShape(polygon);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filter2.setRelation(Filter.AREA_INTERSECTION);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menpaiLayer.setFilterObject(filter2);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.refresh();<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menpaiLayer.setFilterObject(</span><span style="color: #0000ff">null</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(menpaiLayer.getRecordset()&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000"><br />
<img id="Codehighlighter1_2502_2741_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2502_2741_Open_Text.style.display='none'; Codehighlighter1_2502_2741_Closed_Image.style.display='inline'; Codehighlighter1_2502_2741_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2502_2741_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2502_2741_Closed_Text.style.display='none'; Codehighlighter1_2502_2741_Open_Image.style.display='inline'; Codehighlighter1_2502_2741_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;menpaiLayer.getRecordset().getCount()&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_2502_2741_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2502_2741_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ActionMessages&nbsp;msgs&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ActionMessages();<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msgs.add(ActionMessages.GLOBAL_MESSAGE,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ActionMessage(<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">com.suzhou.message.objectNotFound</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.saveMessages(request,&nbsp;msgs);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;mapping.findForward(</span><span style="color: #000000">"</span><span style="color: #000000">resultPage</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img id="Codehighlighter1_2746_2857_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2746_2857_Open_Text.style.display='none'; Codehighlighter1_2746_2857_Closed_Image.style.display='inline'; Codehighlighter1_2746_2857_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2746_2857_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2746_2857_Closed_Text.style.display='none'; Codehighlighter1_2746_2857_Open_Image.style.display='inline'; Codehighlighter1_2746_2857_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #0000ff">else</span><span id="Codehighlighter1_2746_2857_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2746_2857_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">result</span><span style="color: #000000">"</span><span style="color: #000000">,menpaiLayer.getRecordset());<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;mapping.findForward(</span><span style="color: #000000">"</span><span style="color: #000000">resultPage</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_2864_3012_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2864_3012_Open_Text.style.display='none'; Codehighlighter1_2864_3012_Closed_Image.style.display='inline'; Codehighlighter1_2864_3012_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2864_3012_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2864_3012_Closed_Text.style.display='none'; Codehighlighter1_2864_3012_Open_Image.style.display='inline'; Codehighlighter1_2864_3012_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_2864_3012_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_2864_3012_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;建立矩形<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;map<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;startx:起点屏幕X坐标<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;starty:起点屏幕Y坐标<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;endx:终点屏幕X坐标<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;endy：终点屏幕Y坐标<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Polygon&nbsp;creatPolygon(Map&nbsp;map,&nbsp;String&nbsp;startx,&nbsp;String&nbsp;starty,<br />
<img id="Codehighlighter1_3111_3845_Open_Image" onclick="this.style.display='none'; Codehighlighter1_3111_3845_Open_Text.style.display='none'; Codehighlighter1_3111_3845_Closed_Image.style.display='inline'; Codehighlighter1_3111_3845_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_3111_3845_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_3111_3845_Closed_Text.style.display='none'; Codehighlighter1_3111_3845_Open_Image.style.display='inline'; Codehighlighter1_3111_3845_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;endx,&nbsp;String&nbsp;endy)&nbsp;</span><span id="Codehighlighter1_3111_3845_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_3111_3845_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_3119_3799_Open_Image" onclick="this.style.display='none'; Codehighlighter1_3119_3799_Open_Text.style.display='none'; Codehighlighter1_3119_3799_Closed_Image.style.display='inline'; Codehighlighter1_3119_3799_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_3119_3799_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_3119_3799_Closed_Text.style.display='none'; Codehighlighter1_3119_3799_Open_Image.style.display='inline'; Codehighlighter1_3119_3799_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_3119_3799_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_3119_3799_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;pnt1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;map.toMapPoint(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Double(startx).doubleValue(),<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Double(starty).doubleValue());<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;pnt2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;map.toMapPoint(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Double(endx).doubleValue(),<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Double(endy).doubleValue());<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;pnt11&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Point();<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Point&nbsp;pnt22&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Point();<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pnt11.setX(pnt1.getX());<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pnt11.setY(pnt2.getY());<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pnt22.setX(pnt2.getX());<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pnt22.setY(pnt1.getY());<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Points&nbsp;points&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Points();<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;points.addPointObject(pnt1);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;points.addPointObject(pnt11);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;points.addPointObject(pnt2);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;points.addPointObject(pnt22);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ring&nbsp;ring&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Ring();<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ring.setPoints(points);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Polygon&nbsp;polygon&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Polygon();<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;polygon.addRing(ring);<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;polygon;<br />
<img id="Codehighlighter1_3822_3842_Open_Image" onclick="this.style.display='none'; Codehighlighter1_3822_3842_Open_Text.style.display='none'; Codehighlighter1_3822_3842_Closed_Image.style.display='inline'; Codehighlighter1_3822_3842_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_3822_3842_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_3822_3842_Closed_Text.style.display='none'; Codehighlighter1_3822_3842_Open_Image.style.display='inline'; Codehighlighter1_3822_3842_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;ex)&nbsp;</span><span id="Codehighlighter1_3822_3842_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_3822_3842_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></p>
<img src ="http://www.blogjava.net/mycolby/aggbug/205570.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2008-06-03 15:30 <a href="http://www.blogjava.net/mycolby/articles/205570.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>查询ArcIMS中的动态图层</title><link>http://www.blogjava.net/mycolby/articles/186493.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Sat, 15 Mar 2008 07:33:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/186493.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/186493.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/186493.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/186493.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/186493.html</trackback:ping><description><![CDATA[<span class="bold">查询ArcIMS中的动态图层(引自ESRI北京论坛)</span><br />
<br />
<div class="t_msgfont" id="message18144">为了解决客户的问题, 捣鼓了一下arcims的动态图层,因为前后花了我十来个小时,所以还是想写下来和大家分享,有不同意见欢迎广泛交流.<br />
<strong><font size="2">一.关于添加动态图层</font></strong><br />
这是个很不值得一提的问题,看到这个标题,估计很多老师和资深人士都想扔砖头过来.大家还是耐心点儿,古典长篇名著还要从滚滚长江东逝水开始呢.我们也先弄个引子,顺便充实一下篇幅.<br />
<br />
<strong>1.修改AXL文件<br />
</strong>添加动态图层有个前提,就是必须在AXL中,为MAP元素,添加dynamic属性,即:<br />
&lt;MAP dynamic="true"&gt;<br />
这个步骤在Author中无法完成,只能通过文本编辑器手工编辑了.建议使用EmEditor或者VS.<br />
<br />
<strong>2.动态添加</strong><br />
通过发送ArcXML或者调用连接器中封装的对象,我们就可以动态添加指定的图层,下面是使用ArcIMS Java Connector的例子:<br />
<br />
(1)动态添加SHAPE图层<br />
.....<br />
ShapeWorkspace shpw = new ShapeWorkspace();<br />
shpw.setDirectory("D:\\WorkSpace\\sd");<br />
shpw.setName("sde_ws-1");<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br />
map.addWorkspace(shpw);<br />
Dataset data = new Dataset();<br />
data.setName("地区边界");<br />
data.setWorkspaceName(shpw.getName());<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br />
data.setType("polygon");<br />
FeatureLayer fl = new FeatureLayer("2", null, null);<br />
fl.setDataset(data);&nbsp; &nbsp;<br />
fl.setName("地区边界");<br />
fl.setVisible(true);&nbsp; &nbsp;<br />
SimpleRenderer sr = new SimpleRenderer();<br />
SimplePolygonSymbol sm=new SimplePolygonSymbol();<br />
sm.setFillColor("255,0,0");<br />
sm.setBoundaryColor("0,0,255");<br />
sm.setFillType(SimplePolygonSymbol.SOLID);<br />
sr.setSymbol(sm);&nbsp; &nbsp;&nbsp; &nbsp;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br />
fl.setRenderer(sr);&nbsp; &nbsp;&nbsp;&nbsp;<br />
map.getLayers().add(fl);<br />
(2)SDE图层<br />
......<br />
SDEWorkspace sdeWSP = new SDEWorkspace();<br />
sdeWSP.setName("sde_ws-4");<br />
sdeWSP.setInstance("port:5151");<br />
sdeWSP.setServer("jerry");<br />
sdeWSP.setPassword("sde");<br />
sdeWSP.setUser("sde");<br />
map.addWorkspace(sdeWSP);<br />
Dataset data = new Dataset();<br />
data.setName("SDE.地区边界");<br />
data.setWorkspaceName(sdeWSP.getName());<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br />
data.setType("polygon");<br />
FeatureLayer fl = new FeatureLayer("2", null, null);<br />
fl.setDataset(data);<br />
fl.setName("地区边界");<br />
fl.setVisible(true);<br />
SimpleRenderer sr = new SimpleRenderer();<br />
SimplePolygonSymbol sm=new SimplePolygonSymbol();<br />
sm.setFillColor("255,0,0");<br />
sm.setBoundaryColor("0,0,255");<br />
sm.setFillType(SimplePolygonSymbol.SOLID);<br />
sr.setSymbol(sm);<br />
fl.setRenderer(sr);<br />
map.getLayers().add(fl);<br />
<br />
<strong><font size="2">二.动态图层的查询</font></strong><br />
<br />
<strong>1.还是从修改AXL文件开始</strong><br />
<br />
如果要使添加的动态图层可以被查询,比如Identify, 缓冲区查询等等,必须具备一个前提,必须在AXL中,为MAP元素,添加dynamicfeature="true"&gt;属性,即:<br />
&lt;MAP dynamic="true" dynamicfeature="true"&gt;<br />
<br />
<strong>2.两个注意事项</strong><br />
<br />
经过反复测试,发现必须注意两点:<br />
<strong>(1)执行查询时,必须添加对于LAYER的DATASET的定义.而且,DATASET的workspace属性必须是已经包含在AXL文件中.</strong><br />
<strong>(2)如果不是直接发送ArcXML,那么查询之前需要Remove掉动态添加上去的所有workspace</strong><br />
<br />
<strong>3.执行查询的例子</strong><br />
查询的应用类型很多,包括点击地图的Identify,还有图上的框选,圈选,多边形选择,甚至缓冲区查询等等. 有时候还需要结合属性where条件的筛选.对于ArcIMS而言,都是<br />
SPATIALQUERY. 下面就以Identify的点击查询为例.<br />
<br />
(1)直接发送ArcXML:<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;ARCXML version="1.1"&gt;<br />
&lt;ARCXML&gt;<br />
&nbsp;&nbsp;&lt;REQUEST&gt;<br />
&nbsp; &nbsp; &lt;GET_FEATURES envelope="true" geometry="true" outputmode="newxml"&gt;<br />
&nbsp; &nbsp; &lt;LAYER id="2" type="featureclass"&gt;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&lt;DATASET name="SDE.地区边界" type="polygon" workspace="sde_ws-4" /&gt;<br />
&nbsp; &nbsp; &lt;/LAYER&gt;<br />
&nbsp; &nbsp; &lt;SPATIALQUERY searchorder="optimize" subfields="DIST_CODE NAME #SHAPE#"&gt;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&lt;SPATIALFILTER relation="area_intersection"&gt;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;ENVELOPE maxx="120.9610390189751" maxy="37.32400679575094" minx="120.9608390189751" miny="37.32380679575093"/&gt;<br />
&nbsp; &nbsp;&nbsp; &nbsp;&lt;/SPATIALFILTER&gt;<br />
&nbsp; &nbsp; &lt;/SPATIALQUERY&gt;<br />
&nbsp; &nbsp;&lt;/GET_FEATURES&gt;<br />
&nbsp;&nbsp;&lt;/REQUEST&gt;<br />
&lt;/ARCXML&gt;<br />
<br />
注意在LAYER的元素中添加的DATASET的定义.其中,DATASET的workspace属性必须是已经包含在AXL文件的WORKSPACE中.什么<br />
意思呢?就拿这个例子中而言,其中的"sde_ws-4"必须是在这个地图服务的AXL文件中定义过的SDEWORKSPACE.<br />
(2)使用Java Connector程序进行查询:<br />
......<br />
//注意在这里需要获取当前map中的workspace,赋给一个临时变量,然后从map中去除<br />
SDEWorkspace sdeWSP = new SDEWorkspace();<br />
sdeWSP=(SDEWorkspace)map.getWorkspace(0);<br />
map.removeWorkspace(0);<br />
FeatureLayer fLayer=(FeatureLayer)map.getLayers().item(0);<br />
<br />
//注意在这里必须声明Dataset,并且赋予相应的Name, workspace,type等属性,其中workspace名称很重要,必须也是定义在AXL中.<br />
//然后把Dataset对象赋给FeatureLayer对象<br />
Dataset data = new Dataset();<br />
data.setName("SDE.地区边界");<br />
data.setWorkspaceName("sde_ws-4");<br />
data.setType("polygon");<br />
fLayer.setDataset(data);<br />
<br />
com.esri.aims.mtier.model.map.layer.query.Filter filter= new com.esri.aims.mtier.model.map.layer.query.Filter();&nbsp; &nbsp;<br />
Point pnt = map.toMapPoint(Double.parseDouble(x), Double.parseDouble(y));<br />
double maxx = pnt.getX() + 0.0001;<br />
double maxy = pnt.getY() + 0.0001;<br />
double minx = pnt.getX() - 0.0001;<br />
double miny = pnt.getY() - 0.0001;<br />
Envelope envelope = new Envelope();<br />
envelope.setMinX(minx);<br />
envelope.setMinY(miny);<br />
envelope.setMaxX(maxx);<br />
envelope.setMaxY(maxy);<br />
filter.setSpatialShape(envelope);<br />
filter.setGlobalEnvelope(true);<br />
filter.setBoundingEnvelope(true);<br />
filter.addSubField("DIST_CODE");<br />
filter.addSubField("NAME");<br />
filter.setRelation(com.esri.aims.mtier.model.map.layer.query.Filter.AREA_INTERSECTION);<br />
fLayer.getRecordset().clearRecordset();<br />
fLayer.setFilterObject(filter);<br />
map.refresh();<br />
//执行完查询之后,如果有必要,将之前去除的workspace添加到map中.<br />
map.addWorkspace(sdeWSP);<br />
......<br />
<strong>4.常见错误信息</strong><br />
(1) Underlying input stream returned zero bytes<br />
表明没有指定Layer的Dataset,或者Dataset中的workspace没有定义在AXL文件中.<br />
对于仅仅添加动态图层而言,workspace的名字可以是任意的,而且可以不用定义在AXL文件中.但是如果涉及到对于动态图层的查询,就必须注意这一点.<br />
<br />
(2) map.refresh()时候,提交到后台的请求是GET_IMAGE而不是想要执行的GET_FEATURE<br />
这个问题的原因是因为没有在查询之前去除map中包含的workspace<br />
<br />
(3) 添加了动态图层以后,无法查询其他固有的图层<br />
这个问题的原因同2,也是因为没有在查询之前去除map中包含的workspace.<br />
这是个很奇怪的问题,毕竟没有涉及到对动态图层的查询,但是其他图层显然受到了动态图层的影响, anyway, 这样做了以后就OK了.</div>
<img src ="http://www.blogjava.net/mycolby/aggbug/186493.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2008-03-15 15:33 <a href="http://www.blogjava.net/mycolby/articles/186493.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ArcIMS中如何在同一图层中做缓冲选择</title><link>http://www.blogjava.net/mycolby/articles/186490.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Sat, 15 Mar 2008 07:15:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/186490.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/186490.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/186490.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/186490.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/186490.html</trackback:ping><description><![CDATA[<p>ArcIMS中如何在同一图层中做缓冲选择：</p>
<p>在javaConnector中如何在同个图层中缓冲并选择要素。在同一图层中选择出缓冲分析结果需要额外的步骤才能完成，但是当选择图层和做缓冲的不是同一层时，则不需要额外的步骤。一个典型的查询例子是这样的：在San Jose市周围8公里内有多少城市？ <br />
过程描述 <br />
步骤：<br />
额外的步骤如下，需要创建一个新的层来用作buffer层。在filter选择中，如果buffer层和选择目标层是同一层时，将导致错误结果产生。<br />
1.创建一个连接并初始化一个Map对象。在Map.initMap()中LaodRecordset属性必须设置为true。<br />
map.initMap(connection,0,false,false,true,false);<br />
2.创建buffer层的引用。<br />
FeatureLayer fLayer = (FeatureLayer)map.getLayers().item(5); //buffer layer<br />
3.创建一个buffer层的复制层来作为选择的目标层。该新的复制层和原来的图层具有相同的LayerID,MaxScale,MinScale, 和Recordset<br />
FeatureLayer tLayer = new FeatureLayer(fLayer.getID(),fLayer.getMaxScale(),fLayer.getMinScale());<br />
tLayer.setRecordset(fLayer.getRecordset()); //tLayer is the target layer<br />
4.创建Filter类和Buffer对象，并设置他们的属性应用到buffer层上。 <span class="Nuq675">字串9</span> <br />
Filter filter = new Filter();<br />
filter.setWhereExpression("NAME='San Jose'");<br />
Buffer buffer=new Buffer();<br />
buffer.setBufferUnits(Buffer.MILES);<br />
buffer.setBufferDistance(8);<br />
buffer.setPerformBuffer(true);<br />
buffer.setBufferRegionSymbol(ps);<br />
buffer.setBufferSelectionSymbol(ms);<br />
buffer.setBufferTargetLayer(tLayer);<br />
filter.setBufferObject(buffer);<br />
fLayer.setFilterObject(filter);<br />
5.查询结果被保存在一个名称为'bufferLayer'的层中。<br />
FeatureLayer resultLayer=null;<br />
Recordset recordset = null;<br />
for (int i=0;i&lt;map.getLayers().getCount();i++){<br />
if (map.getLayers().item(i).getName().equalsIgnoreCase("bufferLayer")){<br />
resultLayer = (FeatureLayer)map.getLayers().item(i);<br />
break;<br />
}<br />
} </p>
<img src ="http://www.blogjava.net/mycolby/aggbug/186490.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2008-03-15 15:15 <a href="http://www.blogjava.net/mycolby/articles/186490.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何定制ArcGIS Server Java ADF 应用模版(一)--定制工具条</title><link>http://www.blogjava.net/mycolby/articles/183726.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Tue, 04 Mar 2008 08:17:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/183726.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/183726.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/183726.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/183726.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/183726.html</trackback:ping><description><![CDATA[使用ArcGIS Server Java ADF&nbsp; Manager创建的Web Application中提供一个通用的工具条，包含默认的8个地图工具(包括4个Tool和4个Command).<br />
打开模版产生的mapviewer.jsp文件，在第37行我们可以看到这个工具条的定义：
<p>&lt;a:task id="mapToolsTask" value="#{mapToolsTask}" taskInfo="#{mapToolsTask.taskInfo}" mapId="map1" windowingSupport="false" style="padding:0px;margin:0px;" <br />
xslFile="maptoolstask.xsl"/&gt;</p>
<p>我们发现，它并不是由a:toolbar和a:tool定义的，而是一个封装好的mapToolsTask对象。<br />
通过查看faces-config.xml,我们看到mapToolsTask的定义如下：</p>
<p><br />
&lt;managed-bean&gt;<br />
&lt;managed-bean-name&gt;mapToolsTask&lt;/managed-bean-name&gt;<br />
&lt;managed-bean-class&gt;com.esri.adf.web.tasks.MapToolsTask&lt;/managed-bean-class&gt;<br />
&lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br />
&lt;managed-property&gt;<br />
&lt;property-name&gt;webContext&lt;/property-name&gt;<br />
&lt;value&gt;#{mapContext}&lt;/value&gt;<br />
&lt;/managed-property&gt;<br />
&lt;/managed-bean&gt;</p>
<p>事实上，mapToolsTask是在ArcGIS Server Java ADF 中已经封装好的com.esri.adf.web.tasks.MapToolsTask的一个实例。<br />
类似于自定义Task的过程中实现TaskInfo的方法，我们可以也可以通过为这个mapToolsTask实现一个TaskInfo来达到定制的目的。倍感方便的是，在ArcGIS Server Java ADF 也同样封装好了一个<br />
com.esri.adf.web.tasks.MapToolsTaskInfo的类，我们只需继承这个类再修改其中的配置即可，举个最简单的例子：<br />
1.新建一个类MyToolsTaskInfo，继承自com.esri.adf.web.tasks.MapToolsTaskInfo，</p>
<p>
<p>package com.jerry.ags;<br />
import com.esri.adf.web.tasks.MapToolsTaskInfo;<br />
import com.esri.adf.web.tasks.MapToolsTaskConfig;<br />
public class MyToolsTaskInfo extends MapToolsTaskInfo{<br />
public MyToolsTaskInfo(){<br />
&nbsp; MapToolsTaskConfig tc=new MapToolsTaskConfig();<br />
&nbsp; tc.setTools("IDENTIFY,ZOOMIN,ZOOMOUT,");<br />
&nbsp; super.setTaskConfig(tc);<br />
} <br />
}</p>
<p>在这个简单的例子中只包含一个构造函数，在构造函数中我们首先创建一个import com.esri.adf.web.tasks.MapToolsTaskConfig的实例，并调用它的setTools方法，意为在工具条中只包<br />
含"IDENTIFY,ZOOMIN,ZOOMOUT"三个工具。最后通过调用基类的setTaskConfig方法将这个com.esri.adf.web.tasks.MapToolsTaskConfig实例生效。<br />
2.在face-config.xml文件中添加如下配置：</p>
<p>
<p>&lt;managed-bean&gt;<br />
&lt;managed-bean-name&gt;myToolsTaskInfo&lt;/managed-bean-name&gt;<br />
&lt;managed-bean-class&gt;com.jerry.ags.MyToolsTaskInfo&lt;/managed-bean-class&gt;<br />
&lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br />
&lt;/managed-bean&gt;</p>
<p>3.修改mapviewer.jsp文件第37行工具条的定义中taskInfo属性的值</p>
<p>
<p>&lt;a:task id="mapToolsTask" value="#{mapToolsTask}" taskInfo="#{myToolsTaskInfo}" mapId="map1" windowingSupport="false" style="padding:0px;margin0px;" <br />
xslFile="maptoolstask.xsl"/&gt;</p>
<p>4.重新部署并启动应用，我们看到工具条中就只出现三个工具，依次是IDENTIFY-ZOOMIN-ZOOMOUT</p>
<p>补充<br />
1.相信定制模版应用的工具条还有更为灵活的方法，比如直接自定义Tool,Command，并通过a:toolbar,a:tool,a:command等标签定义来替代a:task。可以参考与这部分内容相关的资料。</p>
<p>2.MapToolsTaskInfo继承自com.esri.adf.web.data.tasks.SimpleTaskInfo，因而可以通过实现TaskInfo接口中定义的getActionDescriptors()，getToolDescriptors()等方法进行更复杂的定制。<br />
比如，我们希望修改点击查询为拉框查询，可以修改MyToolsTaskInfo 的实现程序如下：</p>
<p>
<p>package com.jerry.ags;<br />
import com.esri.adf.web.tasks.MapToolsTaskInfo;<br />
import com.esri.adf.web.tasks.MapToolsTaskConfig;<br />
import com.esri.adf.web.data.tasks.TaskToolDescriptorModel;<br />
import com.esri.adf.web.data.tasks.TaskToolDescriptor;<br />
import com.esri.adf.web.faces.event.ClientActions;<br />
import com.esri.adf.web.tasks.MapToolsTask;<br />
public class MyToolsTaskInfo extends MapToolsTaskInfo{<br />
private TaskToolDescriptor[] taskTools=new TaskToolDescriptor[3];<br />
public MyToolsTaskInfo(){<br />
&nbsp; MapToolsTaskConfig tc=new MapToolsTaskConfig();<br />
&nbsp; tc.setTools("IDENTIFY,ZOOMIN,ZOOMOUT,");<br />
&nbsp; super.setTaskConfig(tc);<br />
&nbsp; <br />
&nbsp; taskTools[0]=new TaskToolDescriptor(MapToolsTask.class,"identify","拉框查询",ClientActions.MAP_RECTANGLE);<br />
&nbsp; taskTools[0].setRendererType(TaskToolDescriptor.IMAGE_RENDERER_TYPE);<br />
&nbsp; taskTools[0].setDefaultImage("<a href="http://jerry:8000/gs/images/tasks/maptools/identify.png">http://jerry:8000/gs/images/tasks/maptools/identify.png</a>");<br />
&nbsp; taskTools[0].setSelectedImage("<a href="http://jerry:8000/gs/images/tasks/maptools/identifyD.png">http://jerry:8000/gs/images/tasks/maptools/identifyD.png</a>");<br />
&nbsp; taskTools[0].setHoverImage("<a href="http://jerry:8000/gs/images/tasks/maptools/identifyU.png">http://jerry:8000/gs/images/tasks/maptools/identifyU.png</a>");</p>
<p><br />
&nbsp; taskTools[1]=new TaskToolDescriptor(MapToolsTask.class,"zoomIn","放大",ClientActions.MAP_RECTANGLE);<br />
&nbsp; taskTools[1].setRendererType(TaskToolDescriptor.IMAGE_RENDERER_TYPE);<br />
&nbsp; taskTools[1].setDefaultImage("<a href="http://jerry:8000/gs/images/tasks/maptools/zoomin.png">http://jerry:8000/gs/images/tasks/maptools/zoomin.png</a>");<br />
&nbsp; taskTools[1].setSelectedImage("<a href="http://jerry:8000/gs/images/tasks/maptools/zoominD.png">http://jerry:8000/gs/images/tasks/maptools/zoominD.png</a>");<br />
&nbsp; taskTools[1].setHoverImage("<a href="http://jerry:8000/gs/images/tasks/maptools/zoominU.png">http://jerry:8000/gs/images/tasks/maptools/zoominU.png</a>");<br />
&nbsp; </p>
<p>&nbsp; taskTools[2]=new TaskToolDescriptor(MapToolsTask.class,"zoomOut","缩小",ClientActions.MAP_RECTANGLE);<br />
&nbsp; taskTools[2].setRendererType(TaskToolDescriptor.IMAGE_RENDERER_TYPE);<br />
&nbsp; taskTools[2].setDefaultImage("<a href="http://jerry:8000/gs/images/tasks/maptools/zoomout.png">http://jerry:8000/gs/images/tasks/maptools/zoomout.png</a>");<br />
&nbsp; taskTools[2].setSelectedImage("<a href="http://jerry:8000/gs/images/tasks/maptools/zoomoutD.png">http://jerry:8000/gs/images/tasks/maptools/zoomoutD.png</a>");<br />
&nbsp; taskTools[2].setHoverImage("<a href="http://jerry:8000/gs/images/tasks/maptools/zoomoutU.png">http://jerry:8000/gs/images/tasks/maptools/zoomoutU.png</a>");<br />
}</p>
<p>public TaskToolDescriptorModel[] getToolDescriptors(){<br />
&nbsp; return taskTools;<br />
}</p>
<p>}</p>
<p>注意其中的taskTools[0]=new TaskToolDescriptor(MapToolsTask.class,"identify","拉框查询",ClientActions.MAP_RECTANGLE); <br />
</p>
<img src ="http://www.blogjava.net/mycolby/aggbug/183726.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2008-03-04 16:17 <a href="http://www.blogjava.net/mycolby/articles/183726.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在ArcIMS9.2中使用JAVA ADF实现图层要素的查询</title><link>http://www.blogjava.net/mycolby/articles/183708.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Tue, 04 Mar 2008 07:25:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/183708.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/183708.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/183708.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/183708.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/183708.html</trackback:ping><description><![CDATA[<table width="100%">
    <tbody>
        <tr>
            <td colspan="6">内容摘要</td>
        </tr>
        <tr>
            <td colspan="6">在ArcIMS9.2中，给用户提供了Java ADF开发框架。习惯了Java Connector开发的用户可能会问，Java Connector是否还有用武之地，如何与Java ADF结合起来呢？下面就以图层要素属性查询为例子，说明如何使用Java ADF与Java Connector结合开发实现要素查询功能。在使用ADF开发中，有许多需要注意的小技巧。本例子也使用粗体的注释进行了标识。</td>
        </tr>
        <tr>
            <td colspan="6">过程描述</td>
        </tr>
        <tr>
            <td colspan="6">
            <p style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体"  Times??>
            <p></span><span style="font-family: 宋体"><span style="font-family: 宋体">开发环境：</span>Eclipse3.2</span></span></p>
            <p style="margin: 0cm 0cm 0pt">开发步骤：</span><span>
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 36pt; text-indent: -24pt; tab-stops: list 36.0pt">一、&nbsp;<span style="font-family: 宋体"  Times??>Administrator</span><span style="font-family: 宋体"  Times??>ArcIMS</span><span style="font-family: 宋体"  Times??>
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 36pt; text-indent: -24pt; tab-stops: list 36.0pt">二、&nbsp;<span style="font-family: 宋体"  Times??>Eclipse</span><span style="font-family: 宋体"  Times??> ArcGIS Web Project
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 36pt; text-indent: -24pt; tab-stops: list 36.0pt">三、&nbsp;<span style="font-family: 宋体"  Times??>Java</span><span style="font-family: 宋体"  Times??> FeatureQuery</span><span style="font-family: 宋体"  Times??> queryFeaturesInRectangle</span><span style="font-family: 宋体"  Times??>
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt">
            <p style="margin: 0cm 0cm 0pt 12pt"><span>package com.wudefu;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt">
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.adf.web.data.WebContext;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.adf.web.data.geometry.WebExtent;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.adf.web.data.geometry.WebPoint;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.adf.web.data.*;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.adf.web.faces.event.MapEvent;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.adf.web.aims.data.AIMSMapResource;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.adf.web.aims.data.AIMSMapFunctionality;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.adf.web.aims.data.AIMSTocFunctionality;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.adf.web.aims.data.query.AIMSQueryFunctionality;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.aims.mtier.model.envelope.Envelope;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.aims.mtier.model.map.layer.FeatureLayer;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.aims.mtier.model.map.layer.query.Buffer;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.aims.mtier.model.map.layer.query.Filter;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.aims.mtier.model.map.layer.query.Recordset;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.aims.mtier.model.map.layer.renderer.symbol.SimpleMarkerSymbol;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.aims.mtier.model.map.layer.renderer.symbol.SimplePolygonSymbol;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.aims.mtier.model.map.*;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import com.esri.aims.mtier.model.map.Map;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>import java.util.*;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt">
            <p style="margin: 0cm 0cm 0pt 12pt"><span>public class FeatureQuery {
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt">
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp; &nbsp;private WebContext context;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp; &nbsp;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt">&nbsp;&nbsp; &nbsp;//<span style="font-family: 宋体"  Times??>
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp; &nbsp;public void queryFeaturesInRectangle(MapEvent event){
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt; text-align: left" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: ??">&nbsp;</span><span style="font-family: ??">&nbsp;&nbsp;&nbsp;&nbsp;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt; text-indent: 15.75pt; text-align: left" align="left"><span style="font-family: 宋体">//<strong>调用JAVA ADF里面的WebControl获取地图</strong>
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="color: black; font-family: "  10.5pt;??>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;</span><span style="color: black; font-family: ??">&nbsp;</span><span style="color: black; font-family: "  span 10.5pt;?aims0?< ? font-family: #2a00ff; 10.5pt;?color: black; #0000c0;><span style="color: black; font-family: "  span 10.5pt;<><span style="font-family: "  0pt; align="left"  left;? text-align: 0cm 10.5pt;?margin:><span style="color: black; font-family: "  10.5pt;??>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;AIMSMapFunctionality imsMapFun=(AIMSMapFunctionality)aimsMap.getFunctionality(</span><span style="color: #2a00ff; font-family: "  span 10.5pt;?map?<><span style="color: black; font-family: "  span 10.5pt;<><span style="font-family: "  0pt; align="left"  left;? text-align: 0cm 10.5pt;?margin:><span style="color: black; font-family: "  10.5pt;??>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;Map </span><u></p>
            <p style="margin: 0cm 0cm 0pt 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<span style="font-family: 宋体"  Times??>
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;FeatureLayer fLayer=(FeatureLayer)imsMap.getLayers().item(5);
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<span style="font-family: 宋体"  Times??>
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;WebMap webMap=context.getWebMap();
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;WebExtent chosenExent = (WebExtent) event.getWebGeometry().toMapGeometry(webMap);
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<span style="font-family: 宋体"  Times??> Java Connector</span><span style="font-family: 宋体"  Times??>
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Envelope env=new Envelope();
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;env.setMaxX(chosenExent.getMaxX());
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;env.setMaxY(chosenExent.getMaxY());
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;env.setMinX(chosenExent.getMinX());
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;env.setMinY(chosenExent.getMinY());
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;//<span style="font-family: 宋体"  Times??>
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;SimpleMarkerSymbol sms = new SimpleMarkerSymbol();&nbsp;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;sms.setColor("0,0,255");
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;sms.setMarkerType(sms.STAR);
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;sms.setWidth(20);
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt">
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Filter filter=new Filter();
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;filter.setSpatialShape(env);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;filter.setGlobalEnvelope(true);
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt">
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;fLayer.setFilterObject(filter);
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;//<strong><span style="font-family: 宋体"  Times??>filter</strong><strong><span style="font-family: 宋体"  Times??>update</strong><strong><span style="font-family: 宋体"  Times??> Recordset </strong><strong><span style="font-family: 宋体"  Times??>
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;webMap.update(context, null);
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<span style="font-family: 宋体"  Times??>Java Connector</span><span style="font-family: 宋体"  Times??>
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int a=fLayer.getRecordset().getCount();
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 11.95pt; text-indent: 52.5pt"><span>//int b=fLayer.getFeatureCount();
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(a);
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String fieldNames[]=new String[fLayer.getRecordset().getTableDesc().getCount()];
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String fieldValues[]=new String[fLayer.getRecordset().getTableDesc().getCount()];
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;fLayer.getRecordset().getCount();i++){
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;for (int k=0; k&lt;fLayer.getRecordset().getTableDesc().getCount(); k++) {
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fieldNames[k]= fLayer.getRecordset().getTableDesc().getFieldName(k);
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fieldValues[k]=fLayer.getRecordset().getRecords(i).getFieldValue(k);
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(fieldNames[k]);
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(fieldValues[k]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;imsMap.displayFeatures(fLayer,true,sms); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;webMap.update(context, null);
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt">
            <p style="margin: 0cm 0cm 0pt 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;//<strong><span style="font-family: 宋体"  Times??>imsMap.refresh()</strong><strong><span style="font-family: 宋体"  Times??><span>
            <p></span></strong></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; imsMap.reset();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp; &nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 12pt"><span>&nbsp;&nbsp; }
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt 36pt; text-indent: -24pt; tab-stops: list 36.0pt"><span style="color: black; font-family: "  10.5pt;>四、&nbsp;</span><span style="color: black; font-family: 宋体"  ? font-family: 10.5pt;?color: black; 0cm 10.5pt;?margin: 26.25pt;? text-indent: 11.95pt; 0pt 宋体;?><span style="color: black; font-family: 宋体"  10.5pt; span ? font-family: 10.5pt;?color: black; 宋体;? faces-config&gt;<><span style="color: black; font-family: "  10.5pt;??>&nbsp;&nbsp;&nbsp; </span></span><span style="color: teal; font-family: "  span 10.5pt;<><span style="color: #3f7f7f; font-family: "  span ? font-family: 10.5pt;?color: 10.5pt;< teal;><span style="color: black; font-family: "  10.5pt;??>&nbsp;&nbsp;&nbsp; </span>&nbsp;</span><span style="color: teal; font-family: "  span 10.5pt;<><span style="color: #3f7f7f; font-family: "  span ? font-family: 10.5pt;?color: 10.5pt;< teal;><span style="color: black; font-family: "  10.5pt;??>&nbsp;&nbsp;&nbsp; </span></span><span style="color: teal; font-family: "  span 10.5pt;<><span style="color: #3f7f7f; font-family: "  span ? font-family: 10.5pt;?color: 10.5pt;< teal;><span style="color: black; font-family: "  10.5pt;??>&nbsp;&nbsp;&nbsp; </span>&nbsp;</span><span style="color: teal; font-family: "  span 10.5pt;<><span style="color: #3f7f7f; font-family: "  span ? font-family: 10.5pt;?color: 10.5pt;< teal;><span style="color: black; font-family: "  10.5pt;??>&nbsp;&nbsp;&nbsp; </span>&nbsp;</span><span style="color: teal; font-family: "  span 10.5pt;<><span style="color: #3f7f7f; font-family: "  span ? font-family: 10.5pt;?color: 10.5pt;< teal;><span style="color: black; font-family: "  10.5pt;??>&nbsp;&nbsp;&nbsp; </span>&nbsp;&nbsp;</span><span style="color: teal; font-family: "  span 10.5pt;<><span style="color: #3f7f7f; font-family: "  span ? font-family: 10.5pt;?color: 10.5pt;< teal;><span style="color: black; font-family: "  10.5pt;??>&nbsp;&nbsp;&nbsp; </span>&nbsp;&nbsp;</span><span style="color: teal; font-family: "  span 10.5pt;<><span style="color: #3f7f7f; font-family: "  span ? font-family: 10.5pt;?color: 10.5pt;< teal;><span style="color: black; font-family: "  10.5pt;??>&nbsp;&nbsp;&nbsp; </span>&nbsp;</span><span style="color: teal; font-family: "  10.5pt; span <><span style="color: #3f7f7f; font-family: "  span ? font-family: 10.5pt;?color: 10.5pt;< teal;>&nbsp;</span><span style="color: teal; font-family: "  10.5pt; span <><span style="color: #3f7f7f; font-family: "  span ? font-family: 10.5pt;?color: 10.5pt;< teal;>五、&nbsp;<span style="font-family: 宋体"  Times??>mapviewer.jsp</span><span style="font-family: 宋体"  Times??>
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="color: teal; font-family: "  span 10.5pt;<><span style="color: #3f7f7f; font-family: "  span ? font-family: #2a00ff; 10.5pt;?color: black; < 10.5pt;?Maptools? #7f007f;><span style="color: teal; font-family: "  span 10.5pt;<><span style="font-family: "  0pt; align="left"  left;? text-align: 0cm 10.5pt;?margin:><span style="color: black; font-family: "  10.5pt;??>&nbsp;&nbsp; </span></span><span style="color: teal; font-family: "  span 10.5pt;<><span style="color: #3f7f7f; font-family: "  span ? font-family: #2a00ff; 10.5pt;?color: black; < #7f007f; 10.5pt;?Toolbar?><span style="color: #7f007f; font-family: "  span ? font-family: #2a00ff; 10.5pt;?color: black; 10.5pt;?map1?<><span style="color: teal; font-family: "  span 10.5pt;<><span style="font-family: "  0pt; align="left"  left;? text-align: 0cm 10.5pt;?margin:><span style="color: black; font-family: "  10.5pt;??>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="color: teal; font-family: "  span 10.5pt;<><span style="color: #3f7f7f; font-family: "  span ? font-family: #2a00ff; 10.5pt;?color: black; < #7f007f; 10.5pt;?queryFeatures?><span style="color: #7f007f; font-family: "  span ? font-family: #2a00ff; 10.5pt;?color: black; select_rect_1.gif?< 10.5pt;?images><span style="font-family: "  0pt; align="left"  left;? text-align: 0cm 10.5pt;?margin:><span style="color: #7f007f; font-family: "  span ? font-family: #2a00ff; 10.5pt;?color: black; 10.5pt;?images select_rect_2.gif?<><span style="font-family: "  0pt; align="left"  left;? text-align: 0cm 10.5pt;?margin:><span style="color: #7f007f; font-family: "  span ? font-family: #2a00ff; 10.5pt;?color: black; < 10.5pt;?EsriMapRectangle?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;><span style="color: #7f007f; font-family: "  span ? font-family: #2a00ff; 10.5pt;?color: black; 10.5pt;?<>&nbsp;<span style="color: #7f007f">toolTip</span><span style="color: black">=</span><span style="color: #2a00ff">"</span></span><span style="color: #2a00ff; font-family: 宋体"  span ? font-family: #2a00ff; 10.5pt;?color: 10.5pt;?<><span style="color: teal; font-family: "  span 10.5pt;<><span style="font-family: "  10.5pt; 0pt; align="left"  text-align: 0cm 10.5pt;?margin: text-indent: 415.3pt;? right tab-stops: left;><span style="color: teal; font-family: "  10.5pt; span <><span style="color: #3f7f7f; font-family: "  span ? font-family: 10.5pt;?color: teal; < 10.5pt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;><span style="color: teal; font-family: "  10.5pt; span <><span style="color: #3f7f7f; font-family: "  span ? font-family: 10.5pt;?color: 10.5pt;< teal;><span style="color: teal; font-family: "  10.5pt;??>
            <p></span></p>
            <p style="margin: 0cm 0cm 0pt">&lt;span style="font-family: 宋体;" Times</p>
            </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></strong></span></span></span></u></span></span></span></span>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/mycolby/aggbug/183708.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2008-03-04 15:25 <a href="http://www.blogjava.net/mycolby/articles/183708.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>