FME Object API Read from Oracle8i 空间表实例
来源:互联网 发布:螺纹标准手册软件 编辑:程序博客网 时间:2024/05/16 01:58
//FME Object API Read from Oracle8i 空间表实例 static void ReaderExample_Oracle8i() { // Creates the session IFMEOSession fmeSession = FMEObjects.CreateSession(); fmeSession.Init(null); //日志文件设置 //---------------- string appPath = Assembly.GetExecutingAssembly().Location; int index = appPath.LastIndexOf("\\", appPath.Length - 1); string appFolder = appPath.Substring(0, index); string logFilePath = appFolder + "\\log.txt"; // //Get the log file object from the session IFMEOLogFile fmeLogFile = fmeSession.LogFile(); //Set the path of the log file fmeLogFile.SetFileName(logFilePath, false); //---------------- StringCollection fmeDirectives=new StringCollection(); fmeDirectives.Add("OUTPUT_STATS"); //输出状态:无NO fmeDirectives.Add("YES"); // Creates the oracle spatial reader IFMEOReader fmeRead = fmeSession.CreateReader("ORACLE8I", true, fmeDirectives); StringCollection writerParms = new StringCollection(); writerParms.Add("DATASET"); writerParms.Add("xpserver"); // writerParms.Add("USER_NAME"); writerParms.Add("cdbfsgdb"); // writerParms.Add("PASSWORD"); writerParms.Add("1"); // //打开图层名称(要素类)drawing /**/ writerParms.Add("DEF"); writerParms.Add("drawing"); // writerParms.Add("IDs"); writerParms.Add("drawing"); // writerParms.Add("WHERE_CLAUSE"); writerParms.Add(" 1=1 "); //打开图层名称(要素类)v_tdlyxz_dltb_h /* writerParms.Add("DEF"); writerParms.Add("v_tdlyxz_dltb_h"); // writerParms.Add("IDs"); writerParms.Add("v_tdlyxz_dltb_h"); // writerParms.Add("WHERE_CLAUSE"); writerParms.Add("zldwdm like '510112%' "); */ // fmeRead.Open("xpserver", writerParms); // //读取模式要素 bool bReadSchemaTrue = true; IFMEOFeature fmeSchemaFeature = fmeSession.CreateFeature(); while (bReadSchemaTrue == true) { bReadSchemaTrue = fmeRead.ReadSchema(fmeSchemaFeature); if (bReadSchemaTrue == true) { if (fmeSchemaFeature != null) { fmeLogFile.LogFeature(fmeSchemaFeature, FMEOMessageLevel.Warn, 1); Console.WriteLine(fmeSchemaFeature.FeatureType + "," + fmeSchemaFeature.GeometryType.ToString()); } } } //读取数据要素 bool bReadTrue = true; IFMEOFeature fmeDataFeature=null; IFMEOGeometry geo = null; while (bReadTrue == true) { fmeDataFeature =fmeSession.CreateFeature(); bReadTrue = fmeRead.Read(fmeDataFeature); if (bReadTrue == true) { if (fmeDataFeature != null) { //获取属性值 //Console.WriteLine("FID="+fmeDataFeature.GetStringAttribute("FID")); //Console.WriteLine("BSM="+fmeDataFeature.GetIntAttribute("BSM")); //Console.WriteLine("TBMJ=" + fmeDataFeature.GetDoubleAttribute("TBMJ")); //Console.WriteLine("TBDLMJ=" + fmeDataFeature.GetStringAttribute("TBDLMJ")); // StringCollection fdNames = new StringCollection(); fmeDataFeature.GetAllAttributeNames(fdNames); foreach (string fd in fdNames) { Console.WriteLine(fd + "=" + fmeDataFeature.GetStringAttribute(fd)); } //获取几何图形信息 geo = fmeDataFeature.GetGeometry(); switch (fmeDataFeature.GeometryType) { case FMEOGeometry.Line: //线 { int CoordCount = fmeDataFeature.NumberCoordinates; for (int i = 0; i < CoordCount; i++) { Console.WriteLine("x,y=(" + fmeDataFeature.GetXCoordinate(i) + "," + fmeDataFeature.GetYCoordinate(i) + ")"); } } break; case FMEOGeometry.Point: //点 { int CoordCount = fmeDataFeature.NumberCoordinates; for (int i = 0; i < CoordCount; i++) { Console.WriteLine("x,y=(" + fmeDataFeature.GetXCoordinate(i) + "," + fmeDataFeature.GetYCoordinate(i) + ")"); } } break; case FMEOGeometry.Polygon: //面 { IFMEOFeatureVector fmeFeatVector = fmeSession.CreateFeatureVector(); fmeDataFeature.GetDonutParts(fmeFeatVector); int rings = fmeFeatVector.Count; IFMEOFeature polygonFeat = null; for (int r = 0; r < rings; r++) { polygonFeat = fmeFeatVector.GetAt(r); int CoordCount = polygonFeat.NumberCoordinates; Console.WriteLine("ring id=" + r + "coordnums=" + CoordCount); for (int i = 0; i < CoordCount; i++) { Console.WriteLine("x,y=(" + polygonFeat.GetXCoordinate(i) + "," + polygonFeat.GetYCoordinate(i) + ")"); } polygonFeat.Dispose(); polygonFeat = null; } fmeFeatVector.Dispose(); fmeFeatVector = null; } break; default: break; } // } } } fmeRead.Dispose(); fmeRead = null; // Clean up //fmeFeature.Dispose(); fmeSession.Dispose(); fmeSession = null; }