Пример #1
0
        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());
            }
        }
Пример #2
0
        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());
            }
        }