随笔分类 - ArcGIS
摘要:这两天遇到头皮发麻的事情,VS2010调试程序时老是遇到“vshost32-clr2.exe停止工作”网上找了很多方法无一生效,也许是导致问题的根本原因不同,最后在重装系统一步步安装应用程序的情况下解决,现将该类问题汇总:1、微软官方的意见反馈给出的方法:http://connect.microsoft.com/VisualStudio/feedback/details/632258/vshost32-clr2-exe-stop-working关闭DEP2、网友方法1:关闭杀毒软件和防火墙3、网友方法2:复制好的“vshost32-clr2.exe”执行文件到目标机的相对位置4、网友方法3:重
阅读全文
摘要:You are building an application targeted for x86 configuration on x64 machine with Visual Studio 2010. The project contains a resource file referencing a 32-bit assembly. Target Framework selected is 3.5, 3.0 or 2.0.You may get the following error:Form1.resx(161,5):error RG0000: Could not load file
阅读全文
摘要:ArcGIS数据访问比较简单,有现成的组件可以利用,主要有两种方式,一种是通过图层访问,一种是IWorkspace方式访问一、通过图层访问a.通过MxDocument访问地图图层[C#]IMap pMap;IMaps pMaps = pMxDocument.Maps;for (int i = 0; i <= pMaps.Count - 1; i++){ pMap = pMaps.get_Item(i); Console.WriteLine(pMap.Name); IEnumLayer pEnumLayer = pMap.get_Layers(null, true); p...
阅读全文
摘要:版本:ArcGIS10.0关于地图文档(Map Documents)地图文档可以包括多个地图和一个布局,扩展名为.mxd。在ArcGIS中地图文档可以通过不同的组件访问。基于ArcGIS Desktop开发,最常见的方式是通过MxDocument类访问。在ArcGIS Engine开发中,可以通过多种方式访问和修改地图文档,包括:MapControl、PagaLayoutControl、MapDocument和MapReader等类。在ArcMap应用程序中,可以通过程序hook得到MxDocument的引用。MxDocument会操作ArcMap程序的进程空间,因此当创建一个新的MxDocu
阅读全文
摘要:版本:ArcGIS 10错误处理是编写健壮程序的重要部分,它可以防止程序遇到异常时崩溃。.NET采用Try, Catch, Finally结构来捕获异常,防止程序崩溃。ArcObjects基于COM技术,遇到异常时,会以HRESULTS形式返回错误,并返回给COMException。Try, Catch, and Finally结构该结构可以用来捕获程序中抛出的异常:[C#]try{ IEnvelope env = new EnvelopeClass(); env.PutCoords(0D, 0D, 10D, 10D); ITransform2D trans = (ITran...
阅读全文
摘要:ArcObjects线程模型版本:ArcGIS 10.0 VS2010 C#所有的ArcObjects组件被标识为单线程单元(STA)。每个线程最多只有一个STA,但一个进程可以有多个STA。当STA收到一个函数调用,它将其传递给它所在的线程。因此,STA中的对象同时只能接受并处理一个函数调用,所有的函数调用都会传递到相同的线程。ArcObjects组件是线程安全的,可以在多线程环境中进行开发。为了使得ArcObjects应用在多线程环境中能够有效执行,应该注意ArcObjects的线程模式为单元独立模式。所有的ArcObjects对象只能在同一个线程中交互。为了使该模式更好的工作,在Arc.
阅读全文
摘要:要符合作为基类的要求,coclass必须满足:定义为元数据可创建聚合然而在ArcGIS中,ArcGIS COM类不能在.NET环境中作为基类。如果要想方便的创建ArcGIS组件,可以使用ESRI.ArcGIS.ADF.Local程序集中提供的类,这些类是托管类型,可以被其他类继承。
阅读全文
摘要:版本:ArcGIS10关于persistencepersistence是将对象的当前状态持久的保存在文件、磁盘等存储媒介的过程。在ArcGIS中persistence被用来保存文档和模板的当前状态。通过ArcGIS的UI,可以更改地图文档的众多属性、参数,比如渲染器。当地图保存关闭后,渲染器的实例会释放。当再次打开地图,由于persistence的作用,渲染器会根据保存的状态做预设置,看到和先前一样的状态。Structured storage, compound files, documents, and streams地图文档的保存采用结构化存储技术,结构化存储是实现persistence的
阅读全文
摘要:版本:ArcGIS 10AOUninitialize.Shutdown由ArcGIS Engine开发的独立运行的应用,由于它包含了一个加载地图文档的MapControl控件,在推出程序时可能会遇到如下错误:"The instruction x references memory at x. The memory could not be read.”。这可能是由于COM对象残留在内存中,导致COM库无法从进程退出的结果。为避免该错误,可以使用ESRI.ArcGIS.ADF.Local程序集中的Shutdown静态方法,该方法确保在进程关闭之前卸载所有未使用的COM引用。可以在窗口(
阅读全文
摘要:版本:ArcGIS 10参考:http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/Implementing_cloning/0001000002tw000000/ArcGIS支持IClone接口的对象,可以通过Clone()方法复制对象,其过程比创建新变量要复杂。一下展现创建两个指向同一个对象的变量:[C#]IPoint pointOne = new PointClass();IPoint pointTwo = pointOne;以下展现通过IClone接口复制对象:[C#]IClone cl
阅读全文
摘要:版本:ArcGIS 10事件是由对象发送的标示某项行为发生的信号。事件可以由人机交互操作驱动,比如鼠标点击,也可以由其他程序逻辑驱动。触发事件的对象为事件发送器,捕获事件并相应事件的对象称为事件接收器。.NET Framework定义了委托类型提供了类似函数指针的功能,委托为事件发送器和接收器建立连接。定义委托委托包含的方法必须符合其签名。[C#]delegate int SomeDelegate(string s, bool b); //委托声明.侦听ArcObjects事件步骤:1、创建事件相关接口[C#]IGlobeDisplayEvents_Event globeDisplayEven
阅读全文
摘要:版本:ArcGIS 10 在C#中,相对直接转换,最好通过as操作符进行接口类型转换。通过as操作符进行类型转换失败时,会返回null值,而不是抛出异常。下面的代码演示了两种不同转换的形式:[C#]IGeometry geometry = (IGeometry)point; // 直接转换IGeometry geometry = point as IGeometry; // As操作符转换下面代码演示如何应对类型转换造成的空值:[C#]IPoint point = new PointClass();IGeometry geometry = point as IGeometry;if (geom
阅读全文
摘要:版本:ArcGIS 10 单例对象就是只能有一个实例的对象。在ArcObjects中,单例对象只能通过Activator类实例化,并通过ComReleaser类释放。另外要注意的是,同一个线程中的ArcObjects引用只能访问同一个线程中的对象。通过Activator类创建单例对象:[C#]Type t = Type.GetTypeFromProgID("esriFramework.StyleGallery");System.Object obj = Activator.CreateInstance(t);IStyleGallery sg = obj as IStyleG
阅读全文
摘要:版本:ArcMap9.3 .NET 2.0作者:xmwang软件下载:http://dl.dbank.com/c0ptsnmnhm控件安装与卸载:1、打开CMD命令行2、进入.NET目录cd C:\Windows\Microsoft.NET\Framework\v2.0.507273、用命令regasm注册控件regasm e:\SetNewID.dll /codebase4、卸载:regasm e:\SetNewID.dll /unregister控件使用:1、添加工具栏“规划辅助工具(自动ID)”2、添加图层,选择需要自动设置ID的图层,并设置起始值(eg:10000),如果要素类没有NE
阅读全文
摘要:
阅读全文
摘要:官方步骤:http://help.arcgis.com/zh-cn/arcgisserver/10.0/help/arcgis_server_dotnet_help/index.html#/na/009300001570000000/版本:ArcGIS 10作者:xmwang步骤官方已给出详细介绍,但还是有些注意事项容易忽略:1、设置SOC对数据源的读写权限。a.右击数据库服务器选择“权限”,添加SOC用户b.右击数据源(数据库或则要素集),选择管理->权限,赋予SOC用户读写权限2、采用版本化编辑需要注册版本,右击要素集,选择“注册版本”3、将地图文档所在的文件夹设置为网络共享,以便网
阅读全文
摘要:MapResourceManager描述:最重要的控件,为应用程序添加、删除地图资源,一般构建网络应用程序时,首先实现该控件。使用:打开属性表的ResourcesItems项的集合编辑器,添加一个资源单击Definition后的省略号按钮,打开编辑器,填写资源属性(资源类型、服务器、资源名称),要访问ArcGIS Server本地资源,还需要根据提示添加ArcGIS认证,添加认证后web.config会添加代码:<identity configProtectionProvider="DataProtectionConfigurationProvider"><
阅读全文
摘要:版本:ArcGIS 10.0 当应用程序用到本地资源时(ArcGIS server local data sources)需要创建ArcGIS identity ,其他资源不需要创建,例如:ArcIMS和ArcGIS Server 网络资源(ArcGIS Server Internet data sources)。ArcGIS identity 账户的要求1、账户必须是Web应用程序所在主机上的合法账户2、账户必须在ArcGIS Server SOM所在主机的agsuser和agsusers用户组内3、如果Web应用程序和ArcGIS Server SOM不在一个主机上。当所有主机同在一个域,
阅读全文
摘要:1、同一Add-in中组件之间的交互创建一个插件,往往需要各个组件能够相互交互。例如,通过一个按钮(button)的事件触发一些信息显示在浮动窗口(dockwindow)中。Add-in提供了一种很直观的编程方式,只需要相应组件类实现过去组件引用的静态方法,在其他组件中调用该方法以实现交互。代码如下:[C#]public class MainExt: ESRI.ArcGIS.Desktop.AddIns.Extension{ private static MainExt s_extension; public MainExt() { s_extension = ...
阅读全文
浙公网安备 33010602011771号