lzg_cj
路人甲
路人甲
  • 注册日期2004-01-08
  • 发帖数142
  • QQ
  • 铜币448枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1921回复:5

急!

楼主#
更多 发布于:2004-09-09 17:44
大家好!这段时间我正在用c#和arcgis engine 做个项目,在做新建图层(包括点、线、面层)时遇到些问题,请知道这块怎么做的各位兄弟姐妹指点一下怎么做,在此谢过!希望大家以后共同探讨和交流。
喜欢0 评分0
destnity
路人甲
路人甲
  • 注册日期2004-03-25
  • 发帖数341
  • QQ
  • 铜币272枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-09-09 17:51
什么问题。说清楚点,才有讨论的前提。
签 名: 不能超过 250 个字符 文字将出现在您发表的文章的结尾处。
举报 回复(0) 喜欢(0)     评分
lzg_cj
路人甲
路人甲
  • 注册日期2004-01-08
  • 发帖数142
  • QQ
  • 铜币448枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-09-09 18:05
我不知道怎么样指定新建图层的类型,包括点、线、面。我想应该是根据层的FeatureClass定,但是新建的图层是个空层啊,怎么指定,还请指教,谢谢!如果有人知道怎么创建一个空层的话,请把思路讲一下,谢了!
举报 回复(0) 喜欢(0)     评分
destnity
路人甲
路人甲
  • 注册日期2004-03-25
  • 发帖数341
  • QQ
  • 铜币272枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-09-10 09:00
<P>//====esriFeatureType Constants (esriGeoDatabase)=====</P><P>//esriFTSimple 1
//esriFTSimpleJunction 7
//esriFTSimpleEdge 8
//esriFTComplexJunction 9
//esriFTComplexEdge 10
//esriFTAnnotation 11
//esriFTCoverageAnnotation 12
//esriFTDimension 13
//esriFTRasterCatalogItem 14</P><P>
//-------esriGeometryType Constants (esriGeometry)-----</P><P>//esriGeometryNull 0
//esriGeometryPoint 1
//esriGeometryMultipoint 2
//esriGeometryLine 13
//esriGeometryCircularArc 14
//esriGeometryEllipticArc 16
//esriGeometryBezier3Curve 15
//esriGeometryPath 6
//esriGeometryPolyline 3
//esriGeometryRing 11
//esriGeometryPolygon 4
//esriGeometryEnvelope 5
//esriGeometryAny 7
//esriGeometryBag 17
//esriGeometryMultiPatch 9
//esriGeometryTriangleStrip 18
//esriGeometryTriangleFan 19
//esriGeometryRay 20
//esriGeometrySphere 21
//esriGeometryTriangles 22 </P><P>public static IFeatureClass CreateFeatureClass(object             objectWorkspace,
                                               string             name,
                                               ISpatialReference  spatialReference,
                                               esriFeatureType    featureType,
                                               esriGeometryType   geometryType,
                                               IFields            fields,
                                               UID                uidCLSID,
                                               UID                uidCLSEXT,
                                               string             configWord)
{
  // Check for invalid parameters.
  if (objectWorkspace == null)
  {
    throw(new Exception("[objectWorkspace] cannot be null"));
  }
  if (!((objectWorkspace is IWorkspace) ||
     (objectWorkspace is IFeatureDataset)))
  {
    throw(new Exception("[objectWorkspace] must be IWorkspace or IFeatureDataset"));
  }
  if (name == "")
  {
    throw(new Exception("[name] cannot be empty"));
  }
  if ((objectWorkspace is IWorkspace) ;; (spatialReference == null))
  {
    throw(new Exception("[spatialReference] cannot be null for StandAlong FeatureClasses"));
  }</P><P>  // Set ClassID (if Null)
  if (uidCLSID == null)
  {
    uidCLSID = new UIDClass();
    switch(featureType)
    {
    case(esriFeatureType.esriFTSimple):
      uidCLSID.Value = "{52353152-891A-11D0-BEC6-00805F7C4268}";
      break;
    case(esriFeatureType.esriFTSimpleJunction):
      geometryType = esriGeometryType.esriGeometryPoint;
      uidCLSID.Value = "{CEE8D6B8-55FE-11D1-AE55-0000F80372B4}";
      break;
    case(esriFeatureType.esriFTComplexJunction):
      uidCLSID.Value = "{DF9D71F4-DA32-11D1-AEBA-0000F80372B4}";        
      break;
    case(esriFeatureType.esriFTSimpleEdge):
      geometryType = esriGeometryType.esriGeometryPolyline;
      uidCLSID.Value = "{E7031C90-55FE-11D1-AE55-0000F80372B4}";  
      break;
    case(esriFeatureType.esriFTComplexEdge):
      geometryType = esriGeometryType.esriGeometryPolyline;
      uidCLSID.Value = "{A30E8A2A-C50B-11D1-AEA9-0000F80372B4}";  
      break;
    case(esriFeatureType.esriFTAnnotation):
      geometryType = esriGeometryType.esriGeometryPolygon;
      uidCLSID.Value = "{E3676993-C682-11D2-8A2A-006097AFF44E}";  
      break;
    case(esriFeatureType.esriFTDimension):
      geometryType = esriGeometryType.esriGeometryPolygon;
      uidCLSID.Value = "{496764FC-E0C9-11D3-80CE-00C04F601565}";
      break;
    }
  }</P><P>  // Set uidCLSEXT (if Null)
  if (uidCLSEXT == null)
  {
    switch(featureType)
    {
    case(esriFeatureType.esriFTAnnotation):
      uidCLSEXT = new UIDClass();
      uidCLSEXT.Value = "{24429589-D711-11D2-9F41-00C04F6BC6A5}";
      break;
    case(esriFeatureType.esriFTDimension):
      uidCLSEXT = new UIDClass();
      uidCLSEXT.Value = "{48F935E2-DA66-11D3-80CE-00C04F601565}";
      break;
    }
  }</P><P>  // Add Fields
  if (fields == null)
  {
    // Create fields collection
    fields = new FieldsClass();
    IFieldsEdit fieldsEdit = (IFieldsEdit) fields;</P><P>    // Create the geometry field
    IGeometryDef geometryDef = new GeometryDefClass();
    IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit) geometryDef;</P><P>    // Assign Geometry Definition
    geometryDefEdit.GeometryType_2   = geometryType;
    geometryDefEdit.GridCount_2    = 1;
    geometryDefEdit.set_GridSize(0, 0.5);
    geometryDefEdit.AvgNumPoints_2   = 2;
    geometryDefEdit.HasM_2       = false;
    geometryDefEdit.HasZ_2       = true;
    if (objectWorkspace is IWorkspace)
    {
    // If this is a STANDALONE FeatureClass then add spatial reference.
    geometryDefEdit.SpatialReference_2 = spatialReference;
    }</P><P>    // Create OID Field
    IField fieldOID = new FieldClass();
    IFieldEdit fieldEditOID = (IFieldEdit) fieldOID;
    fieldEditOID.Name_2    = "OBJECTID";
    fieldEditOID.AliasName_2 = "OBJECTID";
    fieldEditOID.Type_2    = esriFieldType.esriFieldTypeOID;
    fieldsEdit.AddField(fieldOID);</P><P>    // Create Geometry Field
    IField fieldShape = new FieldClass();
    IFieldEdit fieldEditShape   = (IFieldEdit) fieldShape;
    fieldEditShape.Name_2    = "SHAPE";
    fieldEditShape.AliasName_2   = "SHAPE";
    fieldEditShape.Type_2    = esriFieldType.esriFieldTypeGeometry;
    fieldEditShape.GeometryDef_2 = geometryDef;
    fieldsEdit.AddField(fieldShape);
  }
    
  // Locate Shape Field
  string stringShapeFieldName = "";
  for (int i = 0; i <= fields.FieldCount - 1; i++)
  {
    if (fields.get_Field(i).Type == esriFieldType.esriFieldTypeGeometry)
    {
    stringShapeFieldName = fields.get_Field(i).Name;
    break;
    }
  }
  if (stringShapeFieldName == "")
  {
    throw(new Exception("Cannot locate geometry field in FIELDS"));
  }
  
  IFeatureClass featureClass = null;
  
  if (objectWorkspace is IWorkspace)
  {
    // Create a STANDALONE FeatureClass
    IWorkspace workspace = (IWorkspace) objectWorkspace;
    IFeatureWorkspace featureWorkspace = (IFeatureWorkspace) workspace;</P><P>    featureClass = featureWorkspace.CreateFeatureClass(name, fields, uidCLSID, uidCLSEXT,
                                                       featureType, stringShapeFieldName,
                                                       configWord);
  }
  else if (objectWorkspace is IFeatureDataset)
  {
    IFeatureDataset featureDataset = (IFeatureDataset) objectWorkspace;
    featureClass = featureDataset.CreateFeatureClass(name, fields, uidCLSID, uidCLSEXT,
                                                     featureType, stringShapeFieldName,
                                                     configWord);
  }
    
  // Return FeatureClass
  return featureClass;
}</P><P>Ao 在线帮助里有很多源代码可以参考。这是其中一个例子。</P>
签 名: 不能超过 250 个字符 文字将出现在您发表的文章的结尾处。
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
4楼#
发布于:2004-09-10 09:26
看帮助是very important<img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
lzg_cj
路人甲
路人甲
  • 注册日期2004-01-08
  • 发帖数142
  • QQ
  • 铜币448枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2004-09-10 14:20
多谢各位了!<img src="images/post/smile/dvbbs/em02.gif" />
举报 回复(0) 喜欢(0)     评分
游客

返回顶部