版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 ArcGIS Engine开发自定义图层类型3ArcGIS Engine开发取得ArcMap文档缩略图3ArcSDE中直接取得图层几何类型4ArcGIS Server常见问题之一5IFeatureLayer.DataSourceType Property C#11IQueryFilter接口中的SubFileds属性的使用12用程序实现从带高程的点数据到等高线的转换13空间查询的实现14创建带Z值的Feature15在AO或者ENGINE中为SHAPEFILE添加SPATIAL INDEX19把一个图层ILayer数据COPY到三维Scenecontrol控件中(进行相
2、关操作)20vb + arcgis engine 用raster生成等值线源码22关于IIdentify定义时只能找到面而不能找到点和线的问题31使用ArcGIS Engine来实现地图的点击查询并闪烁32空间查询的实现34如何在同一图层中做缓冲选择35怎么样使用Engine来保存Mxd文件(几种情况)?36在ArcGIS Engine开发时如何改变标注字段37对shape文件添加字段38在ArcGisEngine 开发中如何在Toolbar控件上添加Combobox等其他控件40自相交对象的处理41在图中加入采集点42创建拓扑类、投影等等。43如何解决shapefile和coverage出现
3、无法导入SDE数据库现象?44怎么显示布局控件的标尺45把shapefile polygons转为polylines45为什么不能编辑raster属性表或添加字段?46使用ArcGIS将GTOPO30 DEM数据转换到栅格数据47旋转地图47给geodatabase或shapefile定义一个投影49ArcGIS Engine中Undo、Redo命令的使用50创建带Z值的Feature50在Ao中如何通过查询获得ITable53关于多个实体联合(union)的使用54在Ao中如何通过查询获得ITable55在Visual Basic中实现ICommand接口56使用ArcObjects程序按照
4、顶点来分割一条线58使用AO加载Raster Catalog61把不同层的几次的选择结果加到一个选择集中61如何为ArcObjects扩展出"GroupRenderer"的效果来?62在AO或者ENGINE中为SHAPEFILE添加SPATIAL INDEX68如何ArcObject的环境中用程序实现3D环境中的查询功能69截取任意围地图区域71使用AO新增记录的3种方法74如何在ArcEngine环境中的SceneControl中实现查询功能75删除FeatureClass中满足一定条件的Feature问题与解决办法!77创建孤立的要素类和数据集中的要素类78SUM Co
5、lor of vertex symbols in edit80要素动态跟踪的算法83同时闪烁满足条件的记录n次86旋转地图89AO代码Display)94在arcEngine中标注字段属性数据99IfeatureSelection:SelectFeatures方法介绍100AO基本函数集合(很多函数功能)103AO画一个多边形110AO画带节点的线111AO计算Polygon的面积112AO缓冲区查询113AO画一个圆114AO查询被选中的实体116AO绘制带节点橡皮筋线条117AO绘制橡皮筋多边形123AO绘制缓冲区126vb+ao鹰眼图代码127如何利用ao编辑shape文件的某个属性的属
6、性值129MO作为B/S客户端控件的开发130MO作为B/S服务器端的开发133两点间画线135创建Personal Geodatabase136ArcObject学习的重要工具Object Model Diagrams137ArcObject学习的重要工具Object Model Diagrams (二)139AO开发感想141AO中的组件库(1)143ArcGIS Engine开发自定义图层类型用ArcGIS Engine开发的一个特别就是面向接口编程,每组接口代表了对象在某个方面的特性,表现为一个方法、属性或事件。要定义自己的图层类型,实际上只需要实现ILayer接口就可以了。该接口的主
7、要方法或属生包括:public IEnvelopeAreaOfInterest get;public void Draw ( esriDrawPhaseDrawPhase, IDisplayDisplay, ITrackCanceltrackCancel)public void SpatialReference set;public string get_TipText ( doublex,
8、; doubley, doubleTolerance);等等,请直接查阅帮助。但实现了该接口,图层只是能加入以地图中,并显示出来而已。如果你要自定义的图层类型是矢量要素的话,最好直接实现IFeatureLayer。由于IFeatureLayer从ILayer继承而来,所以也包含了上述方法或属性。同时还可以支持选择,查询等操作了。实现了IFeatureLayer,还不能支持图层渲染功能。要想支持图层渲染,得实现IGeoFeatureLayer接口,该接口从IFeatureLayer继承而来,所以也包含IFeatureLayer所
9、支持的所有方法属性。如果要支持属性表功能的话,得实现ITable接口。如果希望图层信息能保存到MXD文档中,得实现IPersistStream接口。由此可见,在ArcGIS Engine中,要实现自定义图层类型,并不是一件不可能的事。虽然会比较烦琐,但思路却非常清晰。本人就通过这种思路设计了一种组合图层,可以同时包含点线面多种图形,但在TOCControl中只表现为一个图层。当然,这个工作要简单轻松一些,但还是富有乐趣的ArcGIS Engine开发取得ArcMap文档缩略图ArcObjects提供了一个IMapDocument接口,可以实现对ArcMap文档的读写操作。该接品其中有一个属性是
10、Thumbnail。当我们保存文档,使用了保存缩略选项时,会在文档中保存一个缩略图。我们可以通过Thumbnail来读取这个缩略图。Thumbnail的类型是stdole.IPicture,所以要使用它,首先要引用stdole。private void System.Drawings.Image GetThumbnail(IMapDocument pMapDoc) return System.Drawing.Image.FromHbitmap(IntPtr)(pMapDoc.Thumbnail.Handle);一行代码搞定,哈哈。本来就很简单嘛。
11、好久没写了。先写这么一点吧。ArcSDE中直接取得图层几何类型 要取得SDE图层要素类型,一个方法就是打开该图层,然后通过取得DataSetType属性和FeatureType属性来判断,但这样做效率比较低。能不能通过的系统表来获得呢,答案是可以的。 要有到两系统表:GDB_OBJECTCLASSES和GDB_FEATURECLASSES。 其中
12、GDB_OBJECTCLASSES表中相关字段有:ID、Name,GDB_FEATURECLASSES表的相关字段是:ObjectClassID、FeatureType、GeometryType,两个表的关联关系是:GDB_OBJECTCLASSES.ID=GDB_FEATURECLASSES.ObjectClassID。通过这两个表的关联,就可以取得指定图层要素类型了。 我们可以先通过SQL语句根据图层名称来获取GDB_FEATURECLASSES表中字段FeatureType、GeometryType的值,
13、然后将其转化为对应的要素类型。转换关系请参照下面的代码:public enum GeoTypePoint,Line,Polygon,Anno,Raster,AttrTable,Unknown;public static GeoType GetGeoType(object GeometryType,object FeatureType) &
14、#160; if (GeometryType = DBNull.Value) return GeoType.AttrTable; else if(GeometryType.ToStri
15、ng() = "2") return GeoType.Point;
16、60; else if (GeometryType.ToString() = "3")
17、 return GeoType.Line; else if(GeometryType.ToString() = "4")
18、160; if (FeatureType.ToString() = "1") return GeoT
19、ype.Polygon; else if (FeatureType.ToString() = "11") ret
20、urn GeoType.Anno; else if (FeatureType.ToString() = "14")
21、; return GeoType.Raster; else return GeoType.Un
22、known; else
23、160; return GeoType.Unknown; 通过这种方式,速度很快,而且可以一次读出所有图层的图层基本信息和要素类型,速度极快。如果这些信息要经常使用的话,可以保存到一个哈希表中,这
24、样只用连接一次数据库就了。 ArcGIS Server常见问题之一摘自ESRI,有些容是有限制的,要会员才能看到。目前关于ArcGIS Server开发的资料非常少,就这么一点文档,还要限制,不能让大家共享,实在是罪过。现在我贴出来,希望这些资料对一起学习AGS的朋友有所帮助。错误描述在ArcCatalog中,当成功的创建了server object之后,server object不能被预览。ArcCatalog显示下面的错误信息:“你的选择不能在当前视图中显示.”导致原因server属性中被指定的输出值和 位
25、置可能不正确。解决办法所有的创建的ArcGIS Server Objects需要被停止。1 在ArcCatalog中,右击已经添加的ArcGIS Server,并选择Server属性。2 在目录页中,选中已经添加的输出目录并点击编辑。3 输出目录字段应该指向一个有效的目录,比如 C:ArcGISOutput。如果一个虚拟目录已经被指定,确认它是有效的,并且看上去和下面的格式一样,<servername>/output4 如果有错请更改,然后重新创建server object来确认更改是否有效。 错误描述当在Visual Studio.NET 2003上使用ArcGIS S
26、erver .NET 的ADF模板创建一个项目时,返回如下错误信息:“在服务器<主机名>上的Web站点不可用(Web Site on server <host> is not available)”导致原因该模板包含了调用'localhost'这一URL的属性。如果在IIS中禁用了本地主机的服务,则显示该错误信息。禁用本地服务可能是因为你的Web站点已经为其指定了一个IP地址或者是因为安全方面的考虑。解决办法启用对 localhost的访问决定于您安装的是哪种类型的操作系统,是服务器还是非服务器。对于非服务器的操作系统:1.点击Internet信息服务控
27、制台,右键选择默认站点的属性,打开属性对话框,并选择标签页。2.修改IP地址栏为"(全部未分配)"。3.重启IIS。在IE浏览器中浏览刚刚启用的 localhost 服务,在Visual Studio .NET 2003 中用模板创建项目,现在应该是成功的了。对于Windows Server操作系统: 1. 在Internet信息服务控制台上创建一个新的Web站点。2. 为其分配IP地址:。意味着只能在本地计算机上启用该站点。3. 浏览Web站点的根目录,比如C:Inetputwwwroot 。此时在Visual Studio .NET 2003 中用模板
28、创建项目应该没有问题。错误描述当启动一个服务对象时,出现下述错误信息:“在机器XXX上创建Server 环境(Context)失败。拒绝访问output文件夹。”导致原因ArcGIS Server Object Container的必须拥有虚拟文件夹的写权限。例如虚拟文件夹为: c:inetpubwwwroottemp解决办法执行如下步骤:右键点击虚拟文件夹如: c:inetpubwwwroottemp 1.选择属性->安全标签页. 2.添加并赋予写权限,使其可以读写图片. 3.点击OK,关闭属性对话框.错误描述使用下面的代码,来进行使用字体中的符号进行点要素渲染的时候,会出现地图消失的
29、问题。下面的代码是用来生成需要在渲染过程中使用的点符号的,使用的是宋体中index为21的字作为符号。private static ICharacterMarkerSymbolGetMarkerSymbol(IServerContext pServerContext,PowerNet.GISCommon.SymbolClass pSymbolClass)System.Drawing.Font drawFont = newSystem.Drawing.Font("宋体", 21);ICharacterMarkerSymbol charMarker=pServerContext
30、.CreateObject("esriDisplay.CharacterMarkerSymbol") asICharacterMarkerSymbol;charMarker.Font = (stdole.IFontDisp)OLE.GetIFontDispFromFont(drawFont);charMarker.CharacterIndex = pSymbolClass.CharacterIndex;IRgbColor pRGB = pServerContext.CreateObject("esriDisplay.RgbColor") as IRgbC
31、olor;pRGB.Red=pSymbolClass.SymbolColorR;pRGB.Green=pSymbolClass.SymbolColorG;pRGB.Blue=pSymbolClass.SymbolColorB;charMarker.Color = pRGB as IColor;charMarker.Size = pSymbolClass.SymbolSize;return charMarker;导致原因使用ArcGIS Engine进行开发时,对于点要素类,是可以使用指定字体中的符号作为渲染的符号的,但是在arcgis server的应用中来实现这个过程,就稍微有点不同,导致的
32、原因还是本地对象和远程对象进行了混用?对于ao对象,可能大家都已经有这个概念,就是一般不在本地创建对象,但是对于其它的对象,比如.net中的对象,可能就没有太注意了,所以才导致了这个问题的出现。解决办法这个问题的解决办法是这样的,为了避免在程序中使用下面这句代码:System.Drawing.Font drawFont = newSystem.Drawing.Font(pSymbolClass.FontSymbolName, 21);可以采用先在*.Style文件中把符号都配好,然后转成*.ServerStyle文件,然后使用下面的代码得到相应的符号:private IMarkerSymbol
33、 createSymbol(IServerContext pServerContext,string index)IStyleGallery pSGallery = pServerContext.CreateObject("esriDisplay.ServerStyleGallery") as IStyleGallery ;IStyleGalleryStorage pSGStorage = pSGallery as IStyleGalleryStorage ;pSGStorage.TargetFile = "D:xjw.ServerStyle"pSGSt
34、orage.AddFile ("D:xjw.ServerStyle");IEnumStyleGalleryItem pEnumGItem = pSGallery.get_Items("MarkerSymbols","D:xjw.ServerStyle",index);pEnumGItem.Reset ();IStyleGalleryItem pSGItem = pEnumGItem.Next();IMarkerSymbol pMSymbol = pSGItem.Item as IMarkerSymbol;IRgbColor pRGB
35、= pServerContext.CreateObject("esriDisplay.RgbColor") as IRgbColor;pRGB.Red=255;pRGB.Green =0;pRGB.Blue=0;pMSymbol.Color=pRGB;pMSymbol.Size=18;pEnumGItem=null;pSGItem=null;return pMSymbol;错误描述这个错误可能发生在.net中的ArcGIS Primary Interop Assemblies(PIA)。在错误信息中的CLSID可能会变化:"COM object with CLSI
36、D XXXX is either not valid or not registered"导致原因在ArcGIS安装中选择安装.NET的支持,PIAs就会为所有的ArcGIS库而安装上。当在尝试使用一个对象库的PIA时,而这个对象库根本就没有安装时,错误就会发生,因为Com对象不能被初始化。例如,3DAnalyst扩展模块没有被安装,而尝试使用ESRI.ArcGIS.Analyst3D命名空间中的对象,使用如下代码:ESRI.ArcGIS.Analyst3D.IAnimationTrack aTrack = new ESRI.ArcGIS.Analyst3D.AnimationTra
37、ckClass();一个错误就会发生:"Error number -2147221164: COM object with CLSID 4FEDC9CB-A7BE-11D5-B2A0-00508BCDDE28 is either not valid or not registered."解决办法编程只能使用安装了的对象库。为了开发使用一个特殊的库,那就需要重新安装ArcGIS产品,确保所需的扩展模块都被安装,以与所有的.NET的支持选项。额外的许可会被需要。1 识别使用的对象,以与这些对象所属的命名空间。2 识别命名空间所属的产品。例如,为了使用ESRI.ArcGIS.An
38、alyst3D命名空间中的对象,在开发帮助中浏览库总体说明那一页。会有注解说明这个命名空间是有ArcGIS Engine产品的3D扩展模块,ArcGIS desktop 3D扩展模块,以与ArcGIS Server的3D扩展模块支持。3 重新安装产品,确保所需的扩展模块得到安装,且保证.Net支持选项被选中。错误描述当使用ArcGIS开发者控件开发应用程序、控件拖放于窗体上的时候,出现以下错误信息:"该控件需要一个ESRI Designer 许可。请从工程中移除该控件。"导致原因出现这个信息是因为ArcGIS Engine Developer Kit 这个产品未在机器上安装
39、并授权。ArcGIS Desktop 安装了以下控件: -MapControl -PageLayoutControl -GlobeControl -ReaderControl -SceneControl -TOCControl -ToolbarControl ArcGIS Desktop 许可仅允许使用MapControl 和 PageLayoutControl 进行开发或设计应用程序。剩下的其它控件许可给ArcGIS Engine,并仅能在ArcGIS Engine Developer Kit 已安装并授权时用于开发。解决办法购买ArcGIS Engine Developer Kit 产品,
40、并在机器上授权以下任意控件: -GlobeControl -ReaderControl -SceneControl -TOCControl -ToolbarControl 有关如何使用这些控件的详细信息,以与哪些控件需要对应哪些许可,请参考ArcGIS Developer Help。例如, 'TOCControl CoClass' 帮助主题提到,该控件只在有ArcGIS Engine 产品时才可用。错误描述安装出错1935当安装ArcGIS Server, ArcGIS Desktop, including ArcView, ArcEditor, ArcInfo; or Arc
41、IMS, 都可能发生如下错误: "Error 1935: An error occured during the installation of assembly component 303994BA-6487-47AE-AF1D-7AF6088EEBDB. HRESULT: -2147024894." 之后点击'OK' 安装回滚退出.导致原因导致原因这个错误发生在系统安装(Microsoft XML Parser 4 )更新.这现同样的错误信息将发生在试图安装(Microsoft XML Parser 4.0)的时候; 这也可能修改,但是经常会因为其他产品
42、的安装而影响系统文件破坏。解决办法步骤:1. 尽可能停止一些后台程序,例如adware 或 spyware. 有可能也停止Adwatch,在机器上删除所有的 adware.; 2. 尽可能停止一些Windows服务,控制面板 >管理员工具 >服务;3. 检查Internet Explorer 6.0的安装. 检验Microsoft service 安装包和安装更新; 4. 在安装产品前请先安装Microsoft XML 4.0 SP2,这有可能下载其相关联的一部分; 5. 接着安装ESRI软件产品在第4步安装成功;错误描述在操作系统是Windows XP SP2、CPU为 AMD
43、Athlon 64系列或 Pentium 4 和 Celeron-D 的机器上安装ArcGIS 9.0时,出现1904错误,系统无法注册一些 dll 文件。导致原因在Windows XP SP2 中, DEP(数据执行保护)选项默认情况下是打开的, AMD和Intel新的CUP系列中包含这个选项。数据执行保护是一套硬件和软件技术用于执行对存的额外检查,以保护电脑遭受恶意代码的破坏。解决办法方法一:移除Windows XP的SP2,然后安装ArcGIS 9.0。方法二:关闭DEP(数据执行保护),安装ArcGIS 9.0,安装完再激活数据执行保护。具体如下:1. 以管理员权限登陆Windows
44、XP。 2. 鼠标点击“我的电脑”,选择“属性”菜单 3. 点击“高级”页。 4. 选择“启动与恢复”下的“设置”按钮。 5. 选择默认操作系统,如下: "Microsoft Windows XP Professional" /fastdetect /NoExecute=OptIn 6. 点击“编辑” 按钮打开boot.ini 文件,将其中的“”/NoExecute=OptIn”改为“/NoExecute=AlwaysOff”。 7. 保存文件,重新启动计算机。8. 安装ArcGIS,此时应该就不会出现1904错误了 9. 安装完ArcGIS以后,将 boot.ini 文件
45、设置改回来,以重新激活数据执行保护的安全选项。IFeatureLayer. Property C#See AlsoIFeatureLayer InterfaceLanguage· C#· Visual Basic .NET· Show AllData source type. Visual Basic .NETPublic Property As StringC#public string get; set;Product AvailabilityAvailable with ArcGIS Engine, ArcGIS Desktop, an
46、d ArcGIS Server.DescriptionDescribes the type of data referenced by the feature layer. In ArcMap and ArcCatalog this description appears on the layer's properties dialog on the Source tab after "Data Type:"RemarksBy default, the for a layer matches the value returned by IDataset:Catego
47、ry when you access the layer's feature class through IDataset. You can set a layer's to any string.Here is a list of default values for for common feature layer types:Layer TypeValuePersonal Geodatabase"Personal Geodatabase Feature Class"SDE"SDE Feature Class"Shapefile&qu
48、ot;Shapefile Feature Class"ArcInfo or PC ArcInfo Coverage (annotation)"Annotation Feature Class"ArcInfo or PC ArcInfo Coverage (point)"Point Feature Class"ArcInfo or PC ArcInfo Coverage (line)"Arc Feature Class"ArcInfo or PC ArcInfo Coverage (polygon)"Polygon
49、Feature Class"Edge"StreetMap Feature Class"CAD (annotation)"CAD Annotation Feature Class"CAD (point)"CAD Point Feature Class"CAD (line)"CAD Polyline Feature Class"CAD (polygon)"CAD Polygon Feature Class"把这个图层强制转换成IFeatuerLayer,如果转换失败就不是shape几何类型
50、图层。如IFeatureLayer iFeatureLyr = iLyr as IFeatureLayer;if(iFeatureLyr = null).IQueryFilter接口中的SubFileds属性的使用通过一定的属性条件来查询数据是在处理数据中经常会用到的。当表中的字段非常多,而且很多的属性字段对于这一次查询而言是多余的,因此带着全部字段返回只会减慢查询的速度,如果想返回符合条件的数据,并且只需要带其中某几个自己就可以,那么可以通过SubFields来指定需要的返回字段。下面的是例子代码与注释。注意:在取回来的要素的FieldCount数量还是和原来表的字段一样多,但是没有在sub
51、fields中指定过的字段的值是没有返回的。过程描述Dim pFLayer As IFeatureLayerDim pLayer As ILayerSet pLayer = MapControl1.Layer(0)Set pFLayer = pLayerDim pFeatureClass As IFeatureClassSet pFeatureClass = pFLayer.FeatureClassDim pQueryFilter As IQueryFilterSet pQueryFilter = New QueryFilter'设置SubFields和查询条件:pQueryFilte
52、r.SubFields = "STATE_NAME,STATE_ABBR"pQueryFilter.WhereClause = "STATE_NAME = 'California'"'进行查询:Dim pFeatureCursor As IFeatureCursorSet pFeatureCursor = pFeatureClass.Search(pQueryFilter, False)Dim pFeature As IFeatureSet pFeature = pFeatureCursor.NextFeatureDim pFie
53、lds As IFieldsSet pFields = pFeature.FieldsDebug.Print pFields.FieldCount用程序实现从带高程的点数据到等高线的转换容摘要从高程点到等高线不是一步实现的,而是先把高程点先插值生成TIN,然后再从TIN生成等高线。在从TIN到等高线的生成过程中8.3和9.0上还有点区别,请看代码注释。下面的是整个过程的代码实例。过程描述'打开高程点数据Dim pFeatureLayer As IFeatureLayerSet pFeatureLayer = MapControl1.Map.Layer(0)If pFeatureLaye
54、r Is Nothing Then Exit SubDim pFeatureClass As IFeatureClassSet pFeatureClass = pFeatureLayer.FeatureClass'生成TINDim pTinEdit As ITinEditDim pTinSurface As ISurfaceDim pTable As ITableSet pTinEdit = New TinSet pTable = New FeatureLayerpTinEdit.InitNew MapControl1.ActiveView.ExtentDim pField As IF
55、ieldSet pField = pFeatureClass.Fields.Field(pFeatureClass.Fields.FindField("Well_Dpth")pTinEdit.AddFromFeatureClass pFeatureClass, Nothing, pField, Nothing, 18Set pTinSurface = pTinEdit'打开已经创建好的空的等高线数据(也可以在此时创建一个要素类9,如果是9.0版本的话,在空等高线数据中预先需要建一个字段来存储高'程值,如果是8.3版本的话就不可以预先创建这样的一个高程字段,而
56、是在生成等高线过程中根据你指定的'字段名称实时创建Dim pPropset As IPropertySetSet pPropset = New PropertySetDim pFact As IWorkspaceFactoryDim pWorkspace As IWorkspacepPropset.SetProperty "DATABASE", App.Path + "data"Set pFact = New ShapefileWorkspaceFactorySet pWorkspace = pFact.Open(pPropset, Me.hWn
57、d)Dim pFeatureWorkspace As IFeatureWorkspaceSet pFeatureWorkspace = pWorkspaceDim pFeatureClass1 As IFeatureClassSet pFeatureClass1 = pFeatureWorkspace.OpenFeatureClass("MyShape33")'生成等高线pTinSurface.Contour 0, 50, pFeatureClass1, "Well_Dpth", 1Dim pFLayer As IFeatureLayerSet
58、pFLayer = New FeatureLayerSet pFLayer.FeatureClass = pFeatureClass1MapControl1.AddLayer pFLayerMapControl1.ActiveView.Refresh空间查询的实现空间查询是一个经常要用到的功能,它是通过给定一定的围,查询得到在这个空间围的要素的查询方式。下面的代码是在返回鼠标点击点周围长宽100个地图单位的矩形围的要素。过程描述Dim pMap As IMapDim pPoint As IPointSet pMap = MapControl1.MapDim pFeatureLayer As I
59、FeatureLayerSet pFeatureLayer = pMap.Layer(1)Set pPoint = MapControl1.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(x, y)Dim pEnv As IEnvelopeSet pEnv = New EnvelopeSet pEnv = MapControl1.ActiveView.ExtentpEnv.Height = 100pEnv.Width = 100pEnv.CenterAt pPointMsgBox pPoint.xMsgBox pEnv.XMa
60、xDim pGeometry As IGeometrySet pGeometry = pEnvSet pGeometry.SpatialReference = pMap.SpatialReferencepFeatureLayer.Selectable = TrueDim pSFilter As ISpatialFilterSet pSFilter = New SpatialFilterWith pSFilterSet .Geometry = pGeometry.GeometryField = pFeatureLayer.FeatureClass.ShapeFieldName.SpatialRe
61、l = esriSpatialRelIntersectsEnd WithDim b As Booleanb = pSFilter.FilterOwnsGeometryDim pFeatureCursor As IFeatureCursorSet pFeatureCursor = pFeatureLayer.Search(pSFilter, False)创建带Z值的Feature编号:000484相关产品与版本:ArcInfo Desktop,ArcGIS Engine Developer Kit,ArcGIS Engine Runtime 90平台:PC-Intel Wi
62、ndows2000提交时间:2005-07-01 修改时间:2005-07-01提交人:黄齐飞容摘要使用IZAware接口,对Feature设置Z值。例子中构建了三个点的多边形。测试条件:建立一个Test.mdb的PGDB,创建一个有Z值的多边形图层。加载图层,运行程序。过程描述Option ExplicitDim pAoInitialize As esriSystem.IAoInitializeDim pWorkSpace As esriGeoDatabase.IWorkspaceDim Pt1 As esriGeometry.IPointDim Pt2 As esri
63、Geometry.IPointDim Pt3 As esriGeometry.IPointDim pPtC As esriGeometry.IPointCollectionPrivate Sub Form_Load()'许可初始化Set pAoInitialize = New AoInitializeIf pAoInitialize Is Nothing ThenMsgBox "不能初始化,程序退出!"Unload MeEndEnd IfIf pAoInitialize.IsProductCodeAvailable(esriLicenseProductCodeEng
64、ineGeoDB) = esriLicenseAvailable ThenElseMsgBox "没有合适的运行许可,退出程序!"Unload MeEndEnd If'加载数据Dim pWorkspaceFactory As esriGeoDatabase.IWorkspaceFactorySet pWorkspaceFactory = New esriDataSourcesGDB.AccessWorkspaceFactorySet pWorkSpace = pWorkspaceFactory.OpenFromFile(App.Path & "te
65、st.mdb", 0)Dim pFeatureWorkSpace As esriGeoDatabase.IFeatureWorkspaceDim pFeatureClass As esriGeoDatabase.IFeatureClassDim pFeatureLayer As esriCarto.IFeatureLayerSet pFeatureWorkSpace = pWorkSpaceSet pFeatureClass = pFeatureWorkSpace.OpenFeatureClass("afeitest")Set pFeatureLayer = New esriCarto.FeatureLayerSet pFeatu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年艺术欣赏测试题及答案
- 深度解析(2026)《GBT 30231-2013鼠类防制操作规程 村庄》
- 2026年体育单招面试试题及答案
- 期中后教师大会上校长讲话:汇六股心力、推四个动作、破一道围墙-不加课不加压靠协作把成绩提上来
- 深度解析(2026)《GBT 29835.2-2013系统与软件效率 第2部分:度量方法》
- 深度解析(2026)《GBT 29792-2013静电复印(打印)设备用显影磁辊》
- 深度解析(2026)《GBT 29671-2013化妆品中苯酚磺酸锌的测定 高效液相色谱法》
- 《GBT 7897-2008钢丝网水泥用砂浆力学性能试验方法》(2026年)合规红线与避坑实操手册
- 《GBT 4111-2013混凝土砌块和砖试验方法》(2026年)合规红线与避坑实操手册
- 《GBT 590-2008船用法兰铸铁截止阀》(2026年)合规红线与避坑实操手册
- 2025年水务公司笔试题及答案
- 2026江西省福利彩票发行中心及市级销售机构招聘编外人员14人备考题库及1套完整答案详解
- 初中英语语法完形填空阅读理解满分技巧大全
- 2026第二届全国红旗杯班组长大赛考试备考核心试题库500题
- 地铁泄密案例分析
- 工厂质量事故分析整改手册
- 2026年企业破产债权申报实务培训课件与债权确认指南
- GB/T 4982-2025真空技术夹紧型快卸连接器尺寸
- 雨课堂学堂在线学堂云《国学通论(吉大 )》单元测试考核答案
- 科研助理聘用协议书
- 2025年国家义务教育质量监测小学四年级劳动教育模拟测试题及答案
评论
0/150
提交评论