VS2013中ArcGIS二次开发部分问题问题解决方法
ArcGIS Engine二次开发——提高篇

ArcGIS Engine二次开发——提高篇1缩略图(鹰眼)鹰眼功能是GIS的主要功能之一,当地图范围很大时,它可以很好的为用户指明当前地图的范围。
在本小节中我们将学习如何制作这种鹰眼。
1.1添加控件新建一个C#.Net项目,项目名称为OverView,将Form1的名字设置为MainForm,并添加ToolbarControl 、两个MapControl和LicenceControl等四个控件。
布局如下图所示。
左边的axMapControl1用于地图数据显示和操作,右边axMapControl2用于鹰眼显示。
图 1 界面布局在ToolbarControl 加载添加数据按钮和地图浏览的功能按钮,如下图所示,并将ToolbarControl的伙伴控件设为axMapControl1。
图2添加按钮1.2代码添加及解释鹰眼用来显示主窗体当前视图范围在全景视图中的位置,在ArcMap中使用一个线框在鹰眼视图中标识。
当主视图中的视图范围改变时,鹰眼中的线框随之改变,当拖动鹰眼视图中的红线框时,主视图中的视图范围也随之改变。
下面开始实现鹰眼功能,添加using ESRI.ArcGIS.Carto、using ESRI.ArcGIS.Geometry、using ESRI.ArcGIS.Display三个引用。
首先在axMapControl1中视图范围改变时鹰眼窗体要做出对应的响应,即绘制线框并显示,在OnExtentUpdated事件中添加代码如下:private void axMapControl1_OnExtentUpdated(object sender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnExtentUpdatedEvent e){//创建鹰眼中线框IEnvelope pEnv = (IEnvelope)e.newEnvelope;IRectangleElement pRectangleEle = new RectangleElementClass();IElement pEle = pRectangleEle as IElement;pEle.Geometry = pEnv;//设置线框的边线对象,包括颜色和线宽IRgbColor pColor = new RgbColorClass();pColor.Red = 255;pColor.Green = 0;pColor.Blue = 0;pColor.Transparency = 255;// 产生一个线符号对象ILineSymbol pOutline = new SimpleLineSymbolClass();pOutline.Width = 2;pOutline.Color = pColor;// 设置颜色属性pColor.Red = 255;pColor.Green = 0;pColor.Blue = 0;pColor.Transparency = 0;// 设置线框填充符号的属性IFillSymbol pFillSymbol = new SimpleFillSymbolClass();pFillSymbol.Color = pColor;pFillSymbol.Outline = pOutline;IFillShapeElement pFillShapeEle = pEle as IFillShapeElement;pFillShapeEle.Symbol = pFillSymbol;// 得到鹰眼视图中的图形元素容器IGraphicsContainer pGra = axMapControl2.Map as IGraphicsContainer;IActiveView pAv = pGra as IActiveView;// 在绘制前,清除axMapControl2 中的任何图形元素pGra.DeleteAllElements();// 鹰眼视图中添加线框pGra.AddElement((IElement)pFillShapeEle, 0);// 刷新鹰眼pAv.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);}当鼠标点击鹰眼窗体时,主窗体Extent随之改变。
MapGIS常见问题之二次开发相关问题

MapGIS常见问题中地数码集团平台二次开发支持部本期常见问题主要由MapGIS开发平台C/S开发问题组成,涉及部分B/S开发问题。
1、基于MapGIS开发平台,如何通过代码实现修改线的图形参数操作,包括可变颜色、可变笔宽、线型等参数?答:可按照如下步骤实现:(1)在MapGIS软件中若需查看线、区等要素的图形参数,需开启还原显示功能,可通过编写代码手动开启还原显示功能。
(2)在还原显示模式下,线是通过MapGIS符号库的线型来显示的,而线型符号则由几部分构成,而每一部分若采取固定颜色或者固定笔宽的模式,则无法看到修改后的线型参数。
只有在某一部分采取可变颜色或者可变笔宽的情况下,对图形信息中的相关项的修改才会有效果,因此可以通过修改符号库的相关线型的颜色模式或笔宽模式来达到效果。
(3)一个线型可以通过线型号+辅助线型号来唯一确定,以COM组件式开发C#语言为例的线属性如下:mcLinInfo. libID:辅助线型号mcLinInfo. linstyID:线型号(4)基于COM组件式开发C#语言的还原显示实现代码如下:mcLinInfolineInfo = new mcLinInfo();//线信息mcGeoVarLinevarLine = new mcGeoVarLine();//折线对象//点对象mcDot dot1 = new mcDot();mcDot dot2 = new mcDot();//点对象赋值dot1.x = 50;dot1.y = 50;dot2.x = 200;dot2.y = 200;//添加到折线对象varLine.Append2D(dot1);varLine.Append2D(dot2);//设置线参数lineInfo.linstyID = 21;lineInfo.libID = 4;lineInfo.xscale = 20;lineInfo.yscale = 20;//绘图IXDisplay display = this.axMapXView1.Display;//绘图对象display.DispLine(ptGeom as IGeoLine, lineInfo as mcLinInfo, 6);//根据线参数显示对应的线display.DisplayOption.SymbolShow = true;//开启还原显示功能display.DispLine(varLine, lineInfo as mcLinInfo, 0);//重绘制线2、在查看地图的过程中,常要通过不同比率显示地图,如何通过代码实现按照一定的显示比率显示地图的功能?答:步骤如下:(1)用户常常将显示比率与比例尺相混淆,比例尺一般应用于地图数据打印输出时,表示图上距离与实际距离的比值。
ArcGIS Server常见问题及解决方案

1.是否可以在同一台计算机上安装ArcGIS Server for the Microsoft .NET Framework 和ArcGIS Server for the Java platform?ArcGIS Server 的.NET 和Java 版本可以共存于同一台计算机上。
若要将两者一起安装,则需要遵循以下步骤,以确保服务器目录能够正确地映射到IIS 或Apache Web 服务器的虚拟目录:1.安装.NET 版本或Java 版本的ArcGIS Server。
2.使用管理器或ArcCatalog 删除默认的服务器目录(arcgiscache、arcgisjobs、arcgisindex、arcgisinput、arcgisoutput)及其相关联的虚拟目录。
3.安装其他版本的ArcGIS Server。
您可以保留此版本的默认服务器目录和虚拟目录。
4.使用文件系统工具为步骤1 中安装的ArcGIS Server 版本创建其他服务器目录。
5.使用ArcCatalog 或管理器,为在步骤1 中安装的ArcGIS Server 注册新服务器目录及其相关的虚拟目录。
2.应当对SOM 和SOC 帐户使用何种帐户?服务器对象管理器(SOM) 和服务器对象容器(SOC) 帐户供GIS 服务器进行内部使用,仅需要对计算机拥有有限的权限。
仅当您在其他计算机上安装ArcGIS Server 时,或者仅当您授予GIS 服务器访问您的数据的权限时,您才会用到这些帐户。
大多数情况下,使用安装后配置(ArcGISSOM 和ArcGISSOC)所建议的默认帐户名称并让向导为您创建帐户即可。
出于安全原因,安装后配置将创建较之域帐户更加推荐的本地帐户。
3.计算机名称在安装后配置过程中被截断。
ArcGIS Server 名称不能超过15 个字符;如果超出该长度,则会在安装后配置期间及尝试连接到服务器时遇到错误。
这是与活动目录名称的Microsoft 规范相关的已知限制。
ArcGIS Server常见错误及解决方法

ArcGIS Server常见错误及解决方法0\ 切片的地图服务设置为不自动回收不然系统会自动重启地图服务, 导致切片停止1\ 如果地图加载不上,rest是否发布正确, 是否已在目录中,如下图如果列表中不存在所发布的地图, 则进入http://data70:8399/arcgis/rest/admin清除缓存,如下图然后,再重新进入service管理中,检查可以export map看是否地图正常.第一部分:安装必须安装许可第二部分:使用改完密码必须重启,才起作用第三部分:维护Arcsde地图服务不能预览启动地图服务慢The coordinates or measures are out of bounds[INFO]13:49:21 加载的鹰眼为=====YYZT-zhongguoyingyan2011-5-10 13:49:24 com.esri.adf.web.data.WebContext addResource严重: Unable to initialize resource 'YYZT-zhongguoyingyan'. This resource will be removedcom.esri.adf.web.ags.ADFAGSException: Cannot create MapServer instance for server object 'YYZT-zhongguoyingyan' [hosts=[122.122.200.60]]at com.esri.adf.web.ags.data.AGSLocalConnection.activateResource(Unknown Source)at com.esri.adf.web.ags.data.AGSLocalConnection.initResource(Unknown Sou rce)at com.esri.adf.web.ags.data.AGSLocalMapResource.init(Unknown Source)at com.esri.adf.web.data.WebContext.addResource(Unknown Source)at com.gs.gis.MapResourceControl.addMapResource(MapResourceControl.java: 368)at com.gs.gis.MapResourceControl.mapResourceControl(MapResourceControl.j ava:230)at com.gs.gis.MapResourceControl.changRoleMapResource(MapResourceControl .java:164)at org.apache.jsp.map_jsp._jspService(map_jsp.java:788)at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl icationFilterChain.java:269)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF ilterChain.java:188)at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDisp atcher.java:691)at org.apache.catalina.core.ApplicationDispatcher.processRequest(Applica tionDispatcher.java:469)at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationD ispatcher.java:403)at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDis patcher.java:301)at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImp l.java:322)at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl. java:130)Arcgis rest 启动不起来http://data70:8399/manager/html用户名arcgismanager arcgis.manager查看arcgis 中tomcat日志,发现如下情况, 后经查实, arcgismanager密码不正确导致Starting tomcat thread2011-7-29 13:19:46 org.apache.coyote.http11.Http11Protocol init信息: Initializing Coyote HTTP/1.1 on http-83992011-7-29 13:19:48 org.apache.coyote.http11.Http11Protocol init信息: Initializing Coyote HTTP/1.1 on http-83432011-7-29 13:19:48 org.apache.catalina.startup.Catalina load信息: Initialization processed in 2687 ms2011-7-29 13:19:48 org.apache.catalina.core.StandardService start信息: Starting service Catalina2011-7-29 13:19:48 org.apache.catalina.core.StandardEngine start信息: Starting Servlet Engine: Apache Tomcat/5.5.92011-7-29 13:19:49 com.esri.internal.tomcat.realm.ArcGISCustomRealm start信息: Exception opening database connectionjava.sql.SQLException: 由于找不到数据库arcgissecuritystore,已拒绝连接。
MAPGIS二次开发常见问题及解答1

二次开发常见问题及解答、问:如何用生成明码文件?答:先利用手册看懂明码格式文件的格式,知道数据的组织方式,利用的文件函数创建一个文本型文件,吧数据库中的数据按照格式输出就是了。
、问:和的区别和联系?答:是以前老版本的东东,换成试试中包含了属性结构的详细信息,具体用法可参见二次开发帮助文档中第三章数据结构中关于属性字段描述结构,属性字段描述头和属性信息头的介绍,里面有该结构的详细内容。
、问:请教关于“不能打开子图库...”的问题,急!答:系统库路径不对,将、、三个文件拷贝到执行目录即可。
这几个语言件放在\\目录中。
或是运行可设置,该运行文件也同样在\\目录中。
、问:如果只知道工作区能不能依次得到工作区中的图元号,该如何得到啊!答:;;;;*;{()取点数(《){(()<)取点,返回值成功失败删除;…对该图元进行操作}}就是图元号、问:的函数,到底应该如何用啊!跟以前的不同了,给个例子吧!答:( * * *);点工作区号* 点位置号比如鼠标的位置图层开关标志,如不为空就只在打开状态的图层中查找是的长度出口返回距离返回值成功返回点号,失败为、问:如何屏蔽掉中的右键功能!!!答:有一个属性,同理也可以直接使用这个属性。
'不显示菜单'全部显示'显示窗口菜单'显示窗口编辑菜单'工具箱、问:如何将一个圆添加到一个工作区中?答:先用函数在工作区画园(或画弧)的时候需要自己生成坐标点,比如说 *,这里的空间需自己申请,其长度为,线的参数是,需要赋值,为区工作区号,为弧段号。
然后调用:();输入弧段。
然后添加区域入口: 区工作区号[] 区域数据块[] (弧段个数)[] ( 为弧段号)区域图形信息,需要赋值然后调用:();、问:急关于( * )函数!答:{ 工作区号图元类型图元号}定义一个数组你把所要闪烁的图元一个一个加进去就行了。
、问:实现查询多边形中图元的,并时期闪烁显示,应如何实现呢?答:用系列函数,然后可通过的闪烁机制完成。
vs2013解决方案

vs2013解决方案《VS2013解决方案:在开发中的应用与技巧》Visual Studio 2013(简称VS2013)是由微软公司开发的一款集成开发环境(IDE),适用于开发各种类型的应用程序,包括网页应用、桌面应用、移动应用和云服务。
它提供了丰富的工具和功能,帮助开发人员高效地编写、调试和部署应用程序。
在实际的开发过程中,开发人员可能会遇到各种各样的问题和挑战,而如何解决这些问题则成为他们日常工作的一部分。
下面将介绍一些在使用VS2013解决方案中常见的问题及相应的解决方法。
一、性能优化在使用VS2013进行开发时,有时会遇到程序运行速度缓慢的情况。
这可能是由于代码中存在效率低下的部分,可以通过使用性能分析工具来帮助找出问题所在。
使用VS2013自带的性能分析工具可以检测应用程序的性能瓶颈,并给出相应的优化建议。
通过对关键代码进行性能测试和优化,可以显著提高程序的运行速度和响应能力。
二、调试技巧在开发过程中,经常需要对程序进行调试以找出问题所在。
VS2013提供了各种强大的调试功能,如断点、监视变量、调用堆栈跟踪等,帮助开发人员快速定位和修复bug。
在调试过程中,可以使用断点来暂停程序的执行,并查看此时的变量值,从而找出程序的逻辑错误。
此外,还可以利用调用堆栈跟踪来分析程序的执行流程,帮助理解程序的实际运行情况。
三、版本控制在团队协作中,版本控制是非常重要的一环。
VS2013集成了Team Foundation Version Control(TFVC)和Git等版本控制系统,方便开发人员进行代码管理和协作开发。
通过版本控制系统,开发人员可以方便地进行代码的提交、查看修改记录以及合并分支,保证代码的整洁和安全。
此外,VS2013还提供了一些现代化的协作工具,如Pull Requests和Code Review等,帮助团队成员之间更好地交流和合作。
总之,VS2013作为一款强大的开发工具,为开发人员提供了丰富的解决方案和技巧,帮助他们更高效地进行应用程序的开发和调试。
基于Mapgis二次开发解决地图编制生产中的若干问题

基于Mapgis二次开发解决地图生产编制中的若干棘手问题一、课题出发点地图编制及生产是我室的主要业务工作。
我室每年完成上级下达的常规生产和应急保障任务,以及对外技术合作项目中,有非常大的一块是地图编制生产。
Mapgis软件是作业中主要使用的一个工具软件,该软件提供了丰富的二次开发包(如Mapgis v6.7 SDK)供用户所用,使用户具备了通过编程开发的途径来实现已有功能所不能满足的需求。
然而作业生产实际中碰到的具体问题千变万化,多种多样。
因此,基于Mapgis软件进行编程二次开发解决作业员、审校人员生产实际中费时费力的若干棘手问题,具有实际意义。
二、课题目的及定位目的:利用Mapgis软件的二次开发包进行软件开发,快速实现若干自动化或半自动化软件功能,直接为作业员提供技术保障。
主要意图:(1)解决地图生产中作业员需要花大量时间、精力所做重复劳动的不足,提高效率。
例如快速实现打表格。
(2)利用一些小的算法或巧妙办法帮助作业员,实现人工不容易判断、鼠标操作或者非常费力的问题。
例如利用算法实现街区快速化简为点状居民地,地图所编时居民地压盖严重情况下初步快速删除化简。
(3)通过大量的计算机后台帮助作业员及审校进行一些数据检查工作。
例如mapgis文件属性完整性检查,一致性检查。
定位:虽然在应急保障等任务中,已有的快速成图软件等产品发挥了重要作用。
但平时生产任务中,小问题、琐碎问题依然不断出现,影响成图效率,即“小问题大麻烦”。
本课题立足于平时利用Mapgis软件进行生产中所出现棘手问题的解决,对Mapgis软件不能提供一些规律化的功能编程实现,作为对大型快速成图软件的有效补充,进一步提高生产效率。
三、课题能实现的功能及指标:1.道路线要素合并、剪断自动赋里程;作业当中通常有道路沿线居民地出现增加、删除、移位,以及高速出入口、里程截点的变更等操作,作业员需要多次繁琐操作来人工计算道路里程的合并和分拆赋值,利用算法实现后台自动里程赋值,包括属性变更和里程注记变更。
软件开发过程中的常见问题与解决方法

软件开发过程中的常见问题与解决方法软件开发过程中,常常会遇到各种问题,这些问题可能包括技术、沟通、规划等方面。
解决这些问题需要有一定的经验和方法论。
本文将详细介绍软件开发过程中的常见问题,并提供相应的解决方法。
一、技术问题1.1 编码问题在软件开发过程中,经常会遇到编码不规范、编码不统一等问题。
为了解决这些问题,可以制定编码规范,明确统一的编码风格和命名规范。
定期进行代码审查,及时发现和纠正问题。
1.2 性能问题性能问题是软件开发过程中常见的一个问题。
为了解决性能问题,可以使用性能测试工具进行测试和分析,找出性能瓶颈,并进行优化。
另外,在开发过程中,注意避免一些常见的性能陷阱,如循环中频繁的对象创建和销毁等。
1.3 安全问题软件安全问题是非常重要的一个问题,在开发过程中需要重视。
为了解决安全问题,可以采用安全编码的方法,对输入进行严格的验证和过滤,防止用户输入恶意代码。
另外,加强对用户数据的加密和存储安全也是必要的。
二、沟通问题2.1 团队协作问题在团队协作中,经常会出现沟通不畅、合作不和等问题。
为了解决这些问题,可以定期召开团队会议,明确工作目标和任务分工。
另外,建立良好的沟通渠道,及时交流和解决问题也是必要的。
2.2 与客户沟通问题软件开发过程中,与客户的沟通非常重要。
为了解决与客户的沟通问题,可以建立良好的沟通渠道,及时回复客户的问题和需求。
另外,将客户需求进行详细的记录和分析,确保团队对客户需求的理解一致。
2.3 跨团队沟通问题当软件项目涉及多个团队协作时,常常会面临跨团队沟通的问题。
为了解决这个问题,可以设立联络人,负责不同团队之间的协调和沟通。
另外,定期开展联合会议,分享各团队的工作进展和注意事项,以促进团队之间的合作。
三、规划问题3.1 进度控制问题在软件开发过程中,进度控制是一个重要的问题。
为了解决进度控制问题,可以制定明确的项目计划和里程碑,将项目分解为若干个可管理的任务。
定期进行工作进度的监控与评估,及时调整计划,确保项目按计划进行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VS2013中ArcGIS二次开发部分问题问题解决方法
1、VS2013中新建项目时没有ArcGIS模板解决办法:
安装ArcGIS10.x会自动生成C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\ArcGIS文件夹
和C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp\ArcGIS文件夹
打开vs2013安装目录:
将上面所说的两个ArcGIS文件夹复制到vs2013安装目录下对应的ItemTemplates\CSharp文件夹和ProjectTemplates\CSharp文件夹,
继续返回vs2013安装目录,找到devenv.exe文件,右击该文件选择属性----兼容性---以管理员身份运行此程序。
在开始菜单栏的所有程序中找到下图文件夹,打开Visual StudioTools,
如下图所示:以管理员身份运行VS2013开发人员命令提示,在打开的命令窗口输入devenv.exe /InstallVSTemplates后回车即可
2、vs2013中工具箱中没有ArcGIS控件解决方法:
在工具箱中右键添加选项卡,并起名为ArcGIS,
在ArcGIS下拉后的空白处右击选择项,在弹出的窗口中点击浏览
找到安装ArcObjects SDK for Framework时的目录DeveloperKit10.2,打开该目录下的DotNet文件夹,选中ESRI.ArcGIS.AxControls.dll文件,
点击打开.再点击确定即可。
3、加了ArcGIS控件后最好手动在Main里面添加下面的语句:
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrD esktop);
4、出现下面类似的警告:
警告1:由于存在对由程序集“d:\ArcGis安装目录\DeveloperKit10.2\DotNet\ESRI.ArcGIS.AxControls.dll”创建的程序集的间接引用,因此创建了对嵌入的互操作程序集“d:\ArcGis安装目录\DeveloperKit10.2\DotNet\ESRI.ArcGIS.Controls.dll”的引用。
请考虑更改其中一个程序集的“嵌入互操作类型”属性。
在提示的那个类库上,右键属性,让互操作类型为false
或者直接选中下图所有引用,右键属性,嵌入互操作类型改为false。