追风浪子
路人甲
路人甲
  • 注册日期2004-06-08
  • 发帖数166
  • QQ
  • 铜币782枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1833回复:1

关于Z值的问题

楼主#
更多 发布于:2008-01-08 09:08
<P>我创建的图层要求有Z值,我是这样设置的在IGeometryDefEdit中设置有Z值,在ISpatialReference 中设置 SetZDomain的范围,但图形还是不能正常写入。但如果不设置Z值,输出的图层除了没Z值其它都正常,不知道还有那些要注意的,请高手给指出来。。。。</P>
喜欢0 评分0
cl991036
管理员
管理员
  • 注册日期2003-07-25
  • 发帖数5917
  • QQ14265545
  • 铜币29669枚
  • 威望217点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • GIS帝国铁杆
1楼#
发布于:2008-01-09 09:44
<P>  //gisempire_createshapefile<br>  //createShapeFile -<br>  //lazybones!!<br>  //Misuse,please.<br>  private IFeatureClass createShapeFile(string outShapePath, string outShapeName, int shapeType, bool hasM, bool hasZ, ISpatialReference spatialRef, int gridSize) <br>  {<br>   IFeatureClass fClass = null;<br>   try<br>   {<br>    IWorkspaceFactory shapeWkspFactory = new ShapefileWorkspaceFactoryClass();<br>    IPropertySet connectionProperties = new PropertySetClass();<br>    connectionProperties.SetProperty("DATABASE", outShapePath);<br>    IFeatureWorkspace shapeWksp = (IFeatureWorkspace)shapeWkspFactory.Open(connectionProperties, 0);</P>
<P>    IFields fields = new FieldsClass();<br>    IFieldsEdit fieldsEdit = (IFieldsEdit)fields;<br>    IField field = new FieldClass() ;<br>    IFieldEdit fieldEdit = (IFieldEdit)field;</P>
<P>    IGeometryDefEdit geoDef = new GeometryDefClass();<br>    geoDef.GeometryType_2 = (esriGeometryType)shapeType;<br>    geoDef.HasM_2 = hasM;<br>    geoDef.HasZ_2 = hasZ;<br>    geoDef.SpatialReference_2 = spatialRef;<br>    geoDef.GridCount_2 = 1;<br>    geoDef.set_GridSize(0, gridSize);   </P>
<P>    fieldEdit = new FieldClass();<br>    fieldEdit.Name_2 = "OBJECTID";<br>    fieldEdit.AliasName_2 = "OBJECTID";<br>    fieldEdit.Type_2 = esriFieldType.esriFieldTypeOID;<br>    fieldsEdit.AddField(fieldEdit);</P>
<P>    fieldEdit = new FieldClass();<br>    fieldEdit.Name_2 = "SHAPE";<br>    fieldEdit.IsNullable_2 = true;<br>    fieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;<br>    fieldEdit.GeometryDef_2 = geoDef;<br>    fieldEdit.Required_2 = true;<br>    fieldsEdit.AddField(fieldEdit); <br>   <br>    //高程的数据<br>    fieldEdit = new FieldClass();<br>    fieldEdit.Name_2 = "Z";<br>    fieldEdit.IsNullable_2 = true;<br>    fieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;<br>    fieldsEdit.AddField(fieldEdit); </P>
<P>    fClass = shapeWksp.CreateFeatureClass(outShapeName, fieldsEdit, null, null, esriFeatureType.esriFTSimple, "Shape", "");<br>    return fClass;<br>   }<br>   catch(Exception e)<br>   {<br>    MessageBox.Show("创建图层发生错误: " + e.ToString());    <br>    return null;<br>   }    <br>  }<br></P>
<P>添加数据时也许需要</P>
<P>IZAware zAware = null;<br> zAware = (IZAware)outPoint;<br>zAware.ZAware = true;</P>
<P>进行点ipoint的转换</P><br>
[此贴子已经被作者于2008-1-9 9:47:01编辑过]
没钱又丑,农村户口。头可断,发型一定不能乱。 邮箱:gisempire@qq.com
举报 回复(0) 喜欢(0)     评分
游客

返回顶部