阅读:1833回复:1
关于Z值的问题
<P>我创建的图层要求有Z值,我是这样设置的在IGeometryDefEdit中设置有Z值,在ISpatialReference 中设置 SetZDomain的范围,但图形还是不能正常写入。但如果不设置Z值,输出的图层除了没Z值其它都正常,不知道还有那些要注意的,请高手给指出来。。。。</P>
|
|
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编辑过]
|
|
|