Пример #1
0
        public Task <bool> SetConnectionString(string value)
        {
            if (value == String.Empty)
            {
                _etcon = null;
            }
            else
            {
                _etcon = new EventTableConnection();
                _etcon.FromXmlString(value);
                _state = DatasetState.unknown;
            }

            return(Task.FromResult(true));
        }
Пример #2
0
        async static public Task <IFeatureClass> Create(Dataset dataset, EventTableConnection etconn)
        {
            var fc = new FeatureClass(dataset, etconn);

            if (fc._etcon != null)
            {
                CommonDbConnection conn = new CommonDbConnection();
                conn.ConnectionString2 = fc._etcon.DbConnectionString.ConnectionString;
                if (conn.GetSchema(fc._etcon.TableName))
                {
                    fc._fields = new Fields(conn.schemaTable);
                    IField idfield = fc._fields.FindField(fc._etcon.IdFieldName);
                    if (idfield is Field)
                    {
                        ((Field)idfield).type = FieldType.ID;
                    }
                }
                DataTable tab = await conn.Select("MIN(" + fc._etcon.XFieldName + ") as minx,MAX(" + fc._etcon.XFieldName + ") as maxx,MIN(" + fc._etcon.YFieldName + ") as miny,MAX(" + fc._etcon.YFieldName + ") as maxy", fc._etcon.TableName);

                if (tab != null && tab.Rows.Count == 1)
                {
                    try
                    {
                        fc._env = new Envelope(
                            Convert.ToDouble(tab.Rows[0]["minx"]),
                            Convert.ToDouble(tab.Rows[0]["miny"]),
                            Convert.ToDouble(tab.Rows[0]["maxx"]),
                            Convert.ToDouble(tab.Rows[0]["maxy"]));
                    }
                    catch
                    {
                        fc._env = new Envelope();
                    }
                }
            }

            return(fc);
        }
Пример #3
0
        public FeatureClass(Dataset dataset, EventTableConnection etconn)
        {
            _etcon   = etconn;
            _dataset = dataset;

            if (_etcon != null)
            {
                CommonDbConnection conn = new CommonDbConnection();
                conn.ConnectionString2 = _etcon.DbConnectionString.ConnectionString;
                if (conn.GetSchema(_etcon.TableName))
                {
                    _fields = new Fields(conn.schemaTable);
                    IField idfield = _fields.FindField(_etcon.IdFieldName);
                    if (idfield is Field)
                    {
                        ((Field)idfield).type = FieldType.ID;
                    }
                }
                DataTable tab = conn.Select("MIN(" + _etcon.XFieldName + ") as minx,MAX(" + _etcon.XFieldName + ") as maxx,MIN(" + _etcon.YFieldName + ") as miny,MAX(" + _etcon.YFieldName + ") as maxy", _etcon.TableName);
                if (tab != null && tab.Rows.Count == 1)
                {
                    try
                    {
                        _env = new Envelope(
                            Convert.ToDouble(tab.Rows[0]["minx"]),
                            Convert.ToDouble(tab.Rows[0]["miny"]),
                            Convert.ToDouble(tab.Rows[0]["maxx"]),
                            Convert.ToDouble(tab.Rows[0]["maxy"]));
                    }
                    catch
                    {
                        _env = new Envelope();
                    }
                }
            }
        }
Пример #4
0
        public FeatureCursor(EventTableConnection etconn, IQueryFilter filter)
            : base(
                (etconn != null ? etconn.SpatialReference : null),
                (filter != null ? filter.FeatureSpatialReference : null))
        {
            _etcon = etconn;
            if (etconn != null)
            {
                CommonDbConnection conn = new CommonDbConnection();
                conn.ConnectionString2 = etconn.DbConnectionString.ConnectionString;

                string appendWhere = String.Empty;
                if (filter is ISpatialFilter &&
                    ((ISpatialFilter)filter).Geometry != null)
                {
                    if (!(((ISpatialFilter)filter).Geometry is Envelope))
                    {
                        _addShape = true;
                        filter.AddField("#SHAPE#");
                        _spatialFilter = (ISpatialFilter)filter;
                    }
                    IEnvelope env = ((ISpatialFilter)filter).Geometry.Envelope;
                    appendWhere =
                        etconn.XFieldName + ">=" + env.minx.ToString(_nhi) + " AND " +
                        etconn.XFieldName + "<=" + env.maxx.ToString(_nhi) + " AND " +
                        etconn.YFieldName + ">=" + env.miny.ToString(_nhi) + " AND " +
                        etconn.YFieldName + "<=" + env.maxy.ToString(_nhi);
                }
                if (filter is IRowIDFilter)
                {
                    IRowIDFilter idFilter = (IRowIDFilter)filter;
                    appendWhere = idFilter.RowIDWhereClause;
                }

                string where = (filter != null) ? filter.WhereClause : String.Empty;
                if (!String.IsNullOrEmpty(where))
                {
                    where += (String.IsNullOrEmpty(appendWhere) ? String.Empty : " AND (" + appendWhere + ")");
                }
                else
                {
                    where = appendWhere;
                }

                StringBuilder sb = new StringBuilder();
                sb.Append(filter.SubFieldsAndAlias);
                foreach (string fieldname in filter.SubFields.Split(' '))
                {
                    if (fieldname == "#SHAPE#")
                    {
                        if (sb.Length > 0)
                        {
                            sb.Append(",");
                        }

                        sb.Append(_etcon.XFieldName + "," + _etcon.YFieldName);
                        _addShape = true;
                    }
                    if (fieldname == "*")
                    {
                        _addShape = true;
                    }
                }

                string fields = sb.ToString().Replace(",#SHAPE#", "").Replace("#SHAPE#,", "").Replace("#SHAPE#", "");

                //_tab = conn.Select(sb.ToString(), etconn.TableName, where);
                //_addShape = _tab.Columns.Contains(_etcon.XFieldName) &&
                //            _tab.Columns.Contains(_etcon.YFieldName);
                _dbReader = conn.DataReader("select " + fields + " from " + etconn.TableName + (String.IsNullOrEmpty(where) ? String.Empty : " WHERE " + where), out _dbConnection);
            }
        }
Пример #5
0
        async static public Task <FeatureCursor> Create(EventTableConnection etconn, IQueryFilter filter, IFeatureClass fc)
        {
            var cursor = new FeatureCursor(etconn, filter);

            cursor._etcon = etconn;
            if (etconn != null)
            {
                CommonDbConnection conn = new CommonDbConnection();
                conn.ConnectionString2 = etconn.DbConnectionString.ConnectionString;

                string appendWhere = String.Empty;
                if (filter is ISpatialFilter &&
                    ((ISpatialFilter)filter).Geometry != null)
                {
                    if (!(((ISpatialFilter)filter).Geometry is Envelope))
                    {
                        cursor._addShape = true;
                        filter.AddField("#SHAPE#");
                        cursor._spatialFilter = (ISpatialFilter)filter;
                    }
                    IEnvelope env = ((ISpatialFilter)filter).Geometry.Envelope;
                    appendWhere =
                        etconn.XFieldName + ">=" + env.minx.ToString(_nhi) + " AND " +
                        etconn.XFieldName + "<=" + env.maxx.ToString(_nhi) + " AND " +
                        etconn.YFieldName + ">=" + env.miny.ToString(_nhi) + " AND " +
                        etconn.YFieldName + "<=" + env.maxy.ToString(_nhi);
                }
                if (filter is IRowIDFilter)
                {
                    IRowIDFilter idFilter = (IRowIDFilter)filter;
                    appendWhere = idFilter.RowIDWhereClause;
                }

                string where = (filter != null) ? filter.WhereClause : String.Empty;
                if (!String.IsNullOrEmpty(where))
                {
                    where += (String.IsNullOrEmpty(appendWhere) ? String.Empty : " AND (" + appendWhere + ")");
                }
                else
                {
                    where = appendWhere;
                }

                StringBuilder sb = new StringBuilder();
                sb.Append(filter.SubFieldsAndAlias);
                foreach (string fieldname in filter.SubFields.Split(' '))
                {
                    if (fieldname == "#SHAPE#")
                    {
                        if (sb.Length > 0)
                        {
                            sb.Append(",");
                        }

                        sb.Append(cursor._etcon.XFieldName + "," + cursor._etcon.YFieldName);
                        cursor._addShape = true;
                    }
                    if (fieldname == "*")
                    {
                        cursor._addShape = true;
                    }
                }

                string fields = sb.ToString().Replace(",#SHAPE#", "").Replace("#SHAPE#,", "").Replace("#SHAPE#", "");

                //_tab = conn.Select(sb.ToString(), etconn.TableName, where);
                //_addShape = _tab.Columns.Contains(_etcon.XFieldName) &&
                //            _tab.Columns.Contains(_etcon.YFieldName);

                var limits           = conn.LimitResults(filter, fc);
                var dataReaderResult = await conn.DataReaderAsync("select " + limits.top + fields + " from " + etconn.TableName + (String.IsNullOrEmpty(where) ? String.Empty : " WHERE " + where) + limits.limit);

                cursor._dbReader     = dataReaderResult.reader;
                cursor._dbConnection = dataReaderResult.connection;
            }

            return(cursor);
        }
Пример #6
0
 private FeatureCursor(EventTableConnection etconn, IQueryFilter filter)
     : base(
         (etconn != null ? etconn.SpatialReference : null),
         (filter != null ? filter.FeatureSpatialReference : null))
 {
 }
Пример #7
0
 private FeatureClass(Dataset dataset, EventTableConnection etconn)
 {
     _etcon   = etconn;
     _dataset = dataset;
 }