tyima
路人甲
路人甲
  • 注册日期2004-07-08
  • 发帖数18
  • QQ
  • 铜币168枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2075回复:7

请问ArcObject可以实现自创图层的功能吗?

楼主#
更多 发布于:2004-07-08 16:14
<P><b>读数据库数据,生成相关图层文件即可,比如生成.lyr文件就行了。</b></P>
喜欢0 评分0
ge_zi
论坛版主
论坛版主
  • 注册日期2003-09-04
  • 发帖数278
  • QQ
  • 铜币633枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-07-08 16:24
可以的。只要arcMap,arcCatalog能做的它都能做。呵呵<img src="images/post/smile/dvbbs/em07.gif" />
举报 回复(0) 喜欢(0)     评分
pearlstar
路人甲
路人甲
  • 注册日期2004-07-11
  • 发帖数92
  • QQ
  • 铜币160枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-07-17 20:31
但是如何具体的实现呢?比如调用哪些接口,对象?
举报 回复(0) 喜欢(0)     评分
Eppla
路人甲
路人甲
  • 注册日期2003-08-21
  • 发帖数56
  • QQ
  • 铜币345枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
good good study,day day up!
举报 回复(0) 喜欢(0)     评分
wlh_jimmy
路人甲
路人甲
  • 注册日期2004-02-02
  • 发帖数66
  • QQ309588724
  • 铜币363枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
举报 回复(0) 喜欢(0)     评分
wlh_jimmy
路人甲
路人甲
  • 注册日期2004-02-02
  • 发帖数66
  • QQ309588724
  • 铜币363枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
举报 回复(0) 喜欢(0)     评分
pyt
pyt
路人甲
路人甲
  • 注册日期2004-09-01
  • 发帖数60
  • QQ
  • 铜币157枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2004-09-02 09:46
<img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em03.gif" />
举报 回复(0) 喜欢(0)     评分
wangcheng
路人甲
路人甲
  • 注册日期2004-06-06
  • 发帖数141
  • QQ39308652
  • 铜币110枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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" />
举报 回复(0) 喜欢(0)     评分
游客

返回顶部