public FeatureDataSet ExecuteQuery(string query, OgrGeometry filter) { try { var results = _ogrDataSource.ExecuteSQL(query, filter, ""); results.ResetReading(); //reads the column definition of the layer/feature var ds = new FeatureDataSet(); var myDt = ReadColumnDefinition(results); myDt.BeginLoadData(); OgrFeature ogrFeature; while ((ogrFeature = results.GetNextFeature()) != null) { LoadOgrFeatureToFeatureDataRow(myDt, ogrFeature, Factory); ogrFeature.Dispose(); } myDt.EndLoadData(); ds.Tables.Add(myDt); _ogrDataSource.ReleaseResultSet(results); return(ds); } catch (Exception exc) { Debug.WriteLine(exc.ToString()); return(new FeatureDataSet()); } }
public FeatureDataSet ExecuteQuery(string query, OgrGeometry filter) { try { FeatureDataSet ds = new FeatureDataSet(); FeatureDataTable myDt = new FeatureDataTable(); OgrLayer results = _ogrDataSource.ExecuteSQL(query, filter, ""); //reads the column definition of the layer/feature ReadColumnDefinition(myDt, results); OgrFeature ogrFeature; results.ResetReading(); while ((ogrFeature = results.GetNextFeature()) != null) { FeatureDataRow dr = OgrFeatureToFeatureDataRow(myDt, ogrFeature, Factory); myDt.AddRow(dr); /* * myDt.NewRow(); * for (int iField = 0; iField < ogrFeature.GetFieldCount(); iField++) * { * if (myDt.Columns[iField].DataType == Type.GetType("System.String")) * dr[iField] = ogrFeature.GetFieldAsString(iField); * else if (myDt.Columns[iField].GetType() == Type.GetType("System.Int32")) * dr[iField] = ogrFeature.GetFieldAsInteger(iField); * else if (myDt.Columns[iField].GetType() == Type.GetType("System.Double")) * dr[iField] = ogrFeature.GetFieldAsDouble(iField); * else * dr[iField] = ogrFeature.GetFieldAsString(iField); * } * * dr.Geometry = ParseOgrGeometry(ogrFeature.GetGeometryRef()); * myDt.AddRow(dr); */ } ds.Tables.Add(myDt); _ogrDataSource.ReleaseResultSet(results); return(ds); } catch (Exception exc) { Debug.WriteLine(exc.ToString()); return(new FeatureDataSet()); } }