阅读:2075回复:7
请问ArcObject可以实现自创图层的功能吗?
<P><b>读数据库数据,生成相关图层文件即可,比如生成.lyr文件就行了。</b></P>
|
|
1楼#
发布于:2004-07-08 16:24
可以的。只要arcMap,arcCatalog能做的它都能做。呵呵<img src="images/post/smile/dvbbs/em07.gif" />
|
|
2楼#
发布于:2004-07-17 20:31
但是如何具体的实现呢?比如调用哪些接口,对象?
|
|
3楼#
发布于:2004-07-19 10:51
<PRE><CODE><FONT color=#000080>这种dd在Ao的帮助中有的,下面是VBA的例子</FONT></CODE></PRE><PRE><CODE><FONT color=#000080>Public Sub</FONT></CODE> CreateLayerFile()
<CODE><FONT color=#000080>Dim</FONT></CODE> pLayerFactory <CODE><FONT color=#000080>As</FONT></CODE> ILayerFactory, pApp <CODE><FONT color=#000080>As</FONT></CODE> IGxApplication, pGxObject <CODE><FONT color=#000080>As</FONT></CODE> IGxObject <CODE><FONT color=#000080>Dim</FONT></CODE> pName <CODE><FONT color=#000080>As</FONT></CODE> IName <CODE><FONT color=#000080>Set</FONT></CODE> pLayerFactory = <CODE><FONT color=#000080>New</FONT></CODE> CadLayerFactory <CODE><FONT color=#000080>Set</FONT></CODE> pApp = Application <CODE><FONT color=#000080>Set</FONT></CODE> pGxObject = pApp.SelectedObject <CODE><FONT color=#008000>'Use GetObjectFromFullName if you want to specify a path to a file on disk</FONT></CODE> <CODE><FONT color=#000080>Set</FONT></CODE> pName = pGxObject.InternalObjectName <CODE><FONT color=#000080>If Not</FONT></CODE> pLayerFactory.CanCreate(pName) <CODE><FONT color=#000080>Then</FONT></CODE> MsgBox "Cannot create layer" <CODE><FONT color=#000080>Exit Sub End If Dim</FONT></CODE> pEnum <CODE><FONT color=#000080>As</FONT></CODE> IEnumLayer, pLayer <CODE><FONT color=#000080>As</FONT></CODE> ILayer, pGxLayer <CODE><FONT color=#000080>As</FONT></CODE> IGxLayer, pFile <CODE><FONT color=#000080>As</FONT></CODE> IGxFile <CODE><FONT color=#000080>Set</FONT></CODE> pEnum = pLayerFactory.Create(pName) <CODE><FONT color=#000080>Set</FONT></CODE> pGxLayer = <CODE><FONT color=#000080>New</FONT></CODE> GxLayer <CODE><FONT color=#000080>Set</FONT></CODE> pFile = pGxLayer pFile.Path = "C:\temp\mylayer.lyr" <CODE><FONT color=#000080>Set</FONT></CODE> pGxLayer.Layer = pEnum.Next pFile.Save <CODE><FONT color=#000080>End Sub</FONT></CODE> </PRE> |
|
|
4楼#
发布于:2004-08-06 15:55
<PRE><CODE><FONT color=#000080>Public Sub</FONT></CODE> CreateShapefile() <CODE><FONT color=#000080>Const</FONT></CODE> strFolder <CODE><FONT color=#000080>As String</FONT></CODE> = "D:\Data" <CODE><FONT color=#000080>Const</FONT></CODE> strName <CODE><FONT color=#000080>As String</FONT></CODE> = "MyShapeFile" <CODE><FONT color=#008000>' Dont include .shp extension</FONT></CODE> <CODE><FONT color=#000080>Const</FONT></CODE> strShapeFieldName <CODE><FONT color=#000080>As String</FONT></CODE> = "Shape" <CODE><FONT color=#008000>' Open the folder to contain the shapefile as a workspace</FONT></CODE> <CODE><FONT color=#000080>Dim</FONT></CODE> pFWS <CODE><FONT color=#000080>As</FONT></CODE> IFeatureWorkspace <CODE><FONT color=#000080>Dim</FONT></CODE> pWorkspaceFactory <CODE><FONT color=#000080>As</FONT></CODE> IWorkspaceFactory <CODE><FONT color=#000080>Set</FONT></CODE> pWorkspaceFactory = <CODE><FONT color=#000080>New</FONT></CODE> ShapefileWorkspaceFactory <CODE><FONT color=#000080>Set</FONT></CODE> pFWS = pWorkspaceFactory.OpenFromFile(strFolder, 0) <CODE><FONT color=#008000>' Set up a simple fields collection</FONT></CODE> <CODE><FONT color=#000080>Dim</FONT></CODE> pFields <CODE><FONT color=#000080>As</FONT></CODE> IFields <CODE><FONT color=#000080>Dim</FONT></CODE> pFieldsEdit <CODE><FONT color=#000080>As</FONT></CODE> IFieldsEdit <CODE><FONT color=#000080>Set</FONT></CODE> pFields = <CODE><FONT color=#000080>New</FONT></CODE> esriCore.Fields <CODE><FONT color=#000080>Set</FONT></CODE> pFieldsEdit = pFields <CODE><FONT color=#000080>Dim</FONT></CODE> pField <CODE><FONT color=#000080>As</FONT></CODE> IField <CODE><FONT color=#000080>Dim</FONT></CODE> pFieldEdit <CODE><FONT color=#000080>As</FONT></CODE> IFieldEdit <CODE><FONT color=#008000>' Make the shape field</FONT></CODE> <CODE><FONT color=#008000>' it will need a geometry definition, with a spatial reference</FONT></CODE> <CODE><FONT color=#000080>Set</FONT></CODE> pField = <CODE><FONT color=#000080>New</FONT></CODE> esriCore.Field <CODE><FONT color=#000080>Set</FONT></CODE> pFieldEdit = pField pFieldEdit.Name = strShapeFieldName pFieldEdit.Type = esriFieldTypeGeometry <CODE><FONT color=#000080>Dim</FONT></CODE> pGeomDef <CODE><FONT color=#000080>As</FONT></CODE> IGeometryDef <CODE><FONT color=#000080>Dim</FONT></CODE> pGeomDefEdit <CODE><FONT color=#000080>As</FONT></CODE> IGeometryDefEdit <CODE><FONT color=#000080>Set</FONT></CODE> pGeomDef = <CODE><FONT color=#000080>New</FONT></CODE> GeometryDef <CODE><FONT color=#000080>Set</FONT></CODE> pGeomDefEdit = pGeomDef <CODE><FONT color=#000080>With</FONT></CODE> pGeomDefEdit .GeometryType = esriGeometryPolygon <CODE><FONT color=#000080>Set</FONT></CODE> .SpatialReference = <CODE><FONT color=#000080>New</FONT></CODE> UnknownCoordinateSystem <CODE><FONT color=#000080>End With Set</FONT></CODE> pFieldEdit.GeometryDef = pGeomDef pFieldsEdit.AddField pField <CODE><FONT color=#008000>' Add another miscellaneous text field</FONT></CODE> <CODE><FONT color=#000080>Set</FONT></CODE> pField = <CODE><FONT color=#000080>New</FONT></CODE> esriCore.Field <CODE><FONT color=#000080>Set</FONT></CODE> pFieldEdit = pField <CODE><FONT color=#000080>With</FONT></CODE> pFieldEdit .Length = 30 .Name = "MiscText" .Type = esriFieldTypeString <CODE><FONT color=#000080>End With</FONT></CODE> pFieldsEdit.AddField pField <CODE><FONT color=#008000>' Create the shapefile</FONT></CODE> <CODE><FONT color=#008000>' (some parameters apply to geodatabase options and can be defaulted as Nothing)</FONT></CODE> <CODE><FONT color=#000080>Dim</FONT></CODE> pFeatClass <CODE><FONT color=#000080>As</FONT></CODE> IFeatureClass <CODE><FONT color=#000080>Set</FONT></CODE> pFeatClass = pFWS.CreateFeatureClass(strName, pFields, <CODE><FONT color=#000080>Nothing</FONT></CODE>, _ <CODE><FONT color=#000080>Nothing</FONT></CODE>, esriFTSimple, strShapeFieldName, "")<CODE><FONT color=#000080>End Sub</FONT></CODE></PRE>
|
|
5楼#
发布于:2004-08-06 15:56
<PRE><CODE><FONT color=#000080>Public Sub</FONT></CODE> CreateShapefile() <CODE><FONT color=#000080>Const</FONT></CODE> strFolder <CODE><FONT color=#000080>As String</FONT></CODE> = "D:\Data" <CODE><FONT color=#000080>Const</FONT></CODE> strName <CODE><FONT color=#000080>As String</FONT></CODE> = "MyShapeFile" <CODE><FONT color=#008000>' Dont include .shp extension</FONT></CODE> <CODE><FONT color=#000080>Const</FONT></CODE> strShapeFieldName <CODE><FONT color=#000080>As String</FONT></CODE> = "Shape" <CODE><FONT color=#008000>' Open the folder to contain the shapefile as a workspace</FONT></CODE> <CODE><FONT color=#000080>Dim</FONT></CODE> pFWS <CODE><FONT color=#000080>As</FONT></CODE> IFeatureWorkspace <CODE><FONT color=#000080>Dim</FONT></CODE> pWorkspaceFactory <CODE><FONT color=#000080>As</FONT></CODE> IWorkspaceFactory <CODE><FONT color=#000080>Set</FONT></CODE> pWorkspaceFactory = <CODE><FONT color=#000080>New</FONT></CODE> ShapefileWorkspaceFactory <CODE><FONT color=#000080>Set</FONT></CODE> pFWS = pWorkspaceFactory.OpenFromFile(strFolder, 0) <CODE><FONT color=#008000>' Set up a simple fields collection</FONT></CODE> <CODE><FONT color=#000080>Dim</FONT></CODE> pFields <CODE><FONT color=#000080>As</FONT></CODE> IFields <CODE><FONT color=#000080>Dim</FONT></CODE> pFieldsEdit <CODE><FONT color=#000080>As</FONT></CODE> IFieldsEdit <CODE><FONT color=#000080>Set</FONT></CODE> pFields = <CODE><FONT color=#000080>New</FONT></CODE> esriCore.Fields <CODE><FONT color=#000080>Set</FONT></CODE> pFieldsEdit = pFields <CODE><FONT color=#000080>Dim</FONT></CODE> pField <CODE><FONT color=#000080>As</FONT></CODE> IField <CODE><FONT color=#000080>Dim</FONT></CODE> pFieldEdit <CODE><FONT color=#000080>As</FONT></CODE> IFieldEdit <CODE><FONT color=#008000>' Make the shape field</FONT></CODE> <CODE><FONT color=#008000>' it will need a geometry definition, with a spatial reference</FONT></CODE> <CODE><FONT color=#000080>Set</FONT></CODE> pField = <CODE><FONT color=#000080>New</FONT></CODE> esriCore.Field <CODE><FONT color=#000080>Set</FONT></CODE> pFieldEdit = pField pFieldEdit.Name = strShapeFieldName pFieldEdit.Type = esriFieldTypeGeometry <CODE><FONT color=#000080>Dim</FONT></CODE> pGeomDef <CODE><FONT color=#000080>As</FONT></CODE> IGeometryDef <CODE><FONT color=#000080>Dim</FONT></CODE> pGeomDefEdit <CODE><FONT color=#000080>As</FONT></CODE> IGeometryDefEdit <CODE><FONT color=#000080>Set</FONT></CODE> pGeomDef = <CODE><FONT color=#000080>New</FONT></CODE> GeometryDef <CODE><FONT color=#000080>Set</FONT></CODE> pGeomDefEdit = pGeomDef <CODE><FONT color=#000080>With</FONT></CODE> pGeomDefEdit .GeometryType = esriGeometryPolygon <CODE><FONT color=#000080>Set</FONT></CODE> .SpatialReference = <CODE><FONT color=#000080>New</FONT></CODE> UnknownCoordinateSystem <CODE><FONT color=#000080>End With Set</FONT></CODE> pFieldEdit.GeometryDef = pGeomDef pFieldsEdit.AddField pField <CODE><FONT color=#008000>' Add another miscellaneous text field</FONT></CODE> <CODE><FONT color=#000080>Set</FONT></CODE> pField = <CODE><FONT color=#000080>New</FONT></CODE> esriCore.Field <CODE><FONT color=#000080>Set</FONT></CODE> pFieldEdit = pField <CODE><FONT color=#000080>With</FONT></CODE> pFieldEdit .Length = 30 .Name = "MiscText" .Type = esriFieldTypeString <CODE><FONT color=#000080>End With</FONT></CODE> pFieldsEdit.AddField pField <CODE><FONT color=#008000>' Create the shapefile</FONT></CODE> <CODE><FONT color=#008000>' (some parameters apply to geodatabase options and can be defaulted as Nothing)</FONT></CODE> <CODE><FONT color=#000080>Dim</FONT></CODE> pFeatClass <CODE><FONT color=#000080>As</FONT></CODE> IFeatureClass <CODE><FONT color=#000080>Set</FONT></CODE> pFeatClass = pFWS.CreateFeatureClass(strName, pFields, <CODE><FONT color=#000080>Nothing</FONT></CODE>, _ <CODE><FONT color=#000080>Nothing</FONT></CODE>, esriFTSimple, strShapeFieldName, "")<CODE><FONT color=#000080>End Sub</FONT></CODE></PRE>
|
|
6楼#
发布于:2004-09-02 09:46
<img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em03.gif" />
|
|
7楼#
发布于:2004-09-10 16:33
<img src="images/post/smile/dvbbs/em07.gif" /><img src="images/post/smile/dvbbs/em07.gif" /><img src="images/post/smile/dvbbs/em08.gif" />
|
|