private static void SetShp(Layer PointLayer, Fornix fornix) { if (-1 == PointLayer.FindFieldIndex("trend", 0)) { FieldDefn oFieldName0 = new FieldDefn("trend", FieldType.OFTReal); oFieldName0.SetWidth(50); oFieldName0.SetPrecision(7); PointLayer.CreateField(oFieldName0, 1); } if (-1 == PointLayer.FindFieldIndex("incli", 0)) { FieldDefn oFieldName1 = new FieldDefn("incli", FieldType.OFTReal); oFieldName1.SetWidth(50); oFieldName1.SetPrecision(7); PointLayer.CreateField(oFieldName1, 1); } if (-1 == PointLayer.FindFieldIndex("dip", 0)) { FieldDefn oFieldName2 = new FieldDefn("dip", FieldType.OFTReal); oFieldName2.SetWidth(50); oFieldName2.SetPrecision(7); PointLayer.CreateField(oFieldName2, 1); } for (int i = 0; i < (int)PointLayer.GetFeatureCount(0); ++i) { Vertex vertex = fornix.outSide.upvers.getVer(i); Feature pointFeature = PointLayer.GetFeature(i); pointFeature.SetField("trend", vertex.occurrence.trend); pointFeature.SetField("incli", vertex.occurrence.inclination); pointFeature.SetField("dip", vertex.occurrence.dip); PointLayer.SetFeature(pointFeature); //更改其值 pointFeature.Dispose(); //释放对象 } }
public static FieldDefn ToFieldDefn(MG_Field field) { FieldType type = ToFieldType(field.Type); FieldDefn def = new FieldDefn(field.Name, type); def.SetWidth(field.Width); def.SetPrecision(field.Precision); return(def); }
public void AddFieldReal(string name, int width, int precision) { FieldDefn fdefn = new FieldDefn(name, FieldType.OFTReal); fdefn.SetWidth(width); fdefn.SetPrecision(precision); if (_layer.CreateField(fdefn, 1) != 0) { throw new Exception("Nie można utworzyć pola " + name); } }
/// <summary> /// 输出shapefile 文件 /// </summary> /// <param name="trees"></param> /// <param name="path"></param> public void Createshp(List <Tree> trees, string path) { DataSource outds = oDriver.CreateDataSource(path, null); if (outds == null) { Console.WriteLine("创建矢量文件失败!"); return; } SpatialReference sr = oLayer.GetSpatialRef(); if (sr == null) { string wkt = ""; sr = new SpatialReference(wkt); } Layer outLayer = outds.CreateLayer("PointLayer", sr, wkbGeometryType.wkbPoint, null); //create fields FieldDefn oFieldID = new FieldDefn("ID", FieldType.OFTInteger); outLayer.CreateField(oFieldID, 1); FieldDefn oFieldX = new FieldDefn("X", FieldType.OFTReal);// float型 oFieldX.SetWidth(18); oFieldX.SetPrecision(8); outLayer.CreateField(oFieldX, 1); FieldDefn oFieldY = new FieldDefn("Y", FieldType.OFTReal); oFieldY.SetWidth(18); oFieldY.SetPrecision(8); outLayer.CreateField(oFieldY, 1); FieldDefn oDBH = new FieldDefn("DBH", FieldType.OFTReal); oDBH.SetWidth(18); oDBH.SetPrecision(8); outLayer.CreateField(oDBH, 1); FieldDefn oHeight = new FieldDefn("Height", FieldType.OFTReal); oHeight.SetWidth(18); oHeight.SetPrecision(8); outLayer.CreateField(oHeight, 1); FieldDefn oUBH = new FieldDefn("UBH", FieldType.OFTReal); oUBH.SetWidth(18); oUBH.SetPrecision(8); outLayer.CreateField(oUBH, 1); FieldDefn oCH = new FieldDefn("CH", FieldType.OFTReal); oCH.SetWidth(18); oCH.SetPrecision(8); outLayer.CreateField(oCH, 1); FieldDefn oCW = new FieldDefn("CW", FieldType.OFTReal); oCW.SetWidth(18); oCW.SetPrecision(8); outLayer.CreateField(oCW, 1); FieldDefn eUBH = new FieldDefn("eUBH", FieldType.OFTReal); eUBH.SetWidth(18); eUBH.SetPrecision(8); outLayer.CreateField(eUBH, 1); FieldDefn sUBH = new FieldDefn("sUBH", FieldType.OFTReal); sUBH.SetWidth(18); sUBH.SetPrecision(8); outLayer.CreateField(sUBH, 1); FieldDefn wUBH = new FieldDefn("wUBH", FieldType.OFTReal); wUBH.SetWidth(18); wUBH.SetPrecision(8); outLayer.CreateField(wUBH, 1); FieldDefn nUBH = new FieldDefn("nUBH", FieldType.OFTReal); nUBH.SetWidth(18); nUBH.SetPrecision(8); outLayer.CreateField(nUBH, 1); FieldDefn eCH = new FieldDefn("eCH", FieldType.OFTReal); eCH.SetWidth(18); eCH.SetPrecision(8); outLayer.CreateField(eCH, 1); FieldDefn sCH = new FieldDefn("sCH", FieldType.OFTReal); sCH.SetWidth(18); sCH.SetPrecision(8); outLayer.CreateField(sCH, 1); FieldDefn wCH = new FieldDefn("wCH", FieldType.OFTReal); wCH.SetWidth(18); wCH.SetPrecision(8); outLayer.CreateField(wCH, 1); FieldDefn nCH = new FieldDefn("nCH", FieldType.OFTReal); nCH.SetWidth(18); nCH.SetPrecision(8); outLayer.CreateField(nCH, 1); FieldDefn eCW = new FieldDefn("eCW", FieldType.OFTReal); eCW.SetWidth(18); eCW.SetPrecision(8); outLayer.CreateField(eCW, 1); FieldDefn sCW = new FieldDefn("sCW", FieldType.OFTReal); sCW.SetWidth(18); sCW.SetPrecision(8); outLayer.CreateField(sCW, 1); FieldDefn wCW = new FieldDefn("wCW", FieldType.OFTReal); wCW.SetWidth(18); wCW.SetPrecision(8); outLayer.CreateField(wCW, 1); FieldDefn nCW = new FieldDefn("nCW", FieldType.OFTReal); nCW.SetWidth(18); nCW.SetPrecision(8); outLayer.CreateField(nCW, 1); FieldDefn oBiomass = new FieldDefn("Biomass", FieldType.OFTReal); oBiomass.SetWidth(18); oBiomass.SetPrecision(8); outLayer.CreateField(oBiomass, 1); FieldDefn oMortality = new FieldDefn("Mortality", FieldType.OFTString); oMortality.SetWidth(50); outLayer.CreateField(oMortality, 1); FieldDefn oCutting = new FieldDefn("Cutting", FieldType.OFTString); oCutting.SetWidth(50); outLayer.CreateField(oCutting, 1); // create feature FeatureDefn oDefn = outLayer.GetLayerDefn(); for (int i = 0; i < trees.Count; i++) { Feature oFeature = new Feature(oDefn); oFeature.SetField(0, i); oFeature.SetField(1, double.Parse(trees[i].X.ToString("0.00"))); oFeature.SetField(2, double.Parse(trees[i].Y.ToString("0.00"))); oFeature.SetField(3, double.Parse(trees[i].DBH.ToString("0.00"))); oFeature.SetField(4, double.Parse(trees[i].Height.ToString("0.00"))); oFeature.SetField(5, double.Parse(trees[i].UnderBranchHeight.ToString("0.00"))); oFeature.SetField(6, double.Parse(trees[i].CrownHeight.ToString("0.00"))); oFeature.SetField(7, double.Parse(trees[i].CrownWidth.ToString("0.00"))); if (trees[i].eastUnderBranchHeight > 0) { oFeature.SetField(8, double.Parse(trees[i].eastUnderBranchHeight.ToString("0.00"))); oFeature.SetField(9, double.Parse(trees[i].southUnderBranchHeight.ToString("0.00"))); oFeature.SetField(10, double.Parse(trees[i].westUnderBranchHeight.ToString("0.00"))); oFeature.SetField(11, double.Parse(trees[i].northUnderBranchHeight.ToString("0.00"))); } if (trees[i].eastCrownHeight > 0) { oFeature.SetField(12, double.Parse(trees[i].eastCrownHeight.ToString("0.00"))); oFeature.SetField(13, double.Parse(trees[i].southCrownHeight.ToString("0.00"))); oFeature.SetField(14, double.Parse(trees[i].westCrownHeight.ToString("0.00"))); oFeature.SetField(15, double.Parse(trees[i].northCrownHeight.ToString("0.00"))); } if (trees[i].eastCrownWidth > 0) { oFeature.SetField(16, double.Parse(trees[i].eastCrownWidth.ToString("0.00"))); oFeature.SetField(17, double.Parse(trees[i].southCrownWidth.ToString("0.00"))); oFeature.SetField(18, double.Parse(trees[i].westCrownWidth.ToString("0.00"))); oFeature.SetField(19, double.Parse(trees[i].northCrownWidth.ToString("0.00"))); } oFeature.SetField(20, double.Parse(trees[i].Biomass.ToString("0.00"))); if (trees[i].isMortality) { oFeature.SetField(21, "Mortality"); } if (trees[i].isCutting) { oFeature.SetField(22, "Cutting"); } Geometry geoTree = new Geometry(wkbGeometryType.wkbPoint); geoTree.AddPoint(double.Parse(trees[i].X.ToString("0.00")), double.Parse(trees[i].Y.ToString("0.00")), 0); oFeature.SetGeometry(geoTree); outLayer.CreateFeature(oFeature); } }