/// <summary> /// Retrieves all features within the given BoundingBox. /// </summary> /// <param name="bbox">Bounds of the region to search.</param> /// <param name="ds">FeatureDataSet to fill data into</param> public override void ExecuteIntersectionQuery(BoundingBox bbox, FeatureDataSet ds) { DataRow[] rows; if (Table.Rows.Count == 0) { return; } string statement = XColumn + " > " + bbox.Left().ToString(Map.NumberFormatEnUs) + " AND " + XColumn + " < " + bbox.Right().ToString(Map.NumberFormatEnUs) + " AND " + YColumn + " > " + bbox.Bottom().ToString(Map.NumberFormatEnUs) + " AND " + YColumn + " < " + bbox.Top().ToString(Map.NumberFormatEnUs); rows = Table.Select(statement); FeatureDataTable fdt = new FeatureDataTable(Table); foreach (DataColumn col in Table.Columns) { fdt.Columns.Add(col.ColumnName, col.DataType, col.Expression); } foreach (DataRow dr in rows) { fdt.ImportRow(dr); FeatureDataRow fdr = fdt.Rows[fdt.Rows.Count - 1] as FeatureDataRow; fdr.Geometry = Factory.CreatePoint(new Coordinate((double)dr[XColumn], (double)dr[YColumn])); } ds.Tables.Add(fdt); }
/// <summary> /// Returns geometry Object IDs whose bounding box intersects 'bbox' /// </summary> /// <param name="bbox"></param> /// <returns></returns> public override Collection <uint> GetObjectIDsInView(BoundingBox bbox) { DataRow[] drow; Collection <uint> objectlist = new Collection <uint>(); if (Table.Rows.Count == 0) { return(null); } string strSQL = XColumn + " > " + bbox.Left().ToString(Map.NumberFormatEnUs) + " AND " + XColumn + " < " + bbox.Right().ToString(Map.NumberFormatEnUs) + " AND " + YColumn + " > " + bbox.Bottom().ToString(Map.NumberFormatEnUs) + " AND " + YColumn + " < " + bbox.Top().ToString(Map.NumberFormatEnUs); drow = Table.Select(strSQL); foreach (DataRow dr in drow) { objectlist.Add((uint)(int)dr[0]); } return(objectlist); }
/// <summary> /// Returns geometry Object IDs whose bounding box intersects 'bbox' /// </summary> /// <param name="bbox"></param> /// <returns></returns> public override Collection<uint> GetObjectIDsInView(BoundingBox bbox) { DataRow[] drow; Collection<uint> objectlist = new Collection<uint>(); if (Table.Rows.Count == 0) { return null; } string strSQL = XColumn + " > " + bbox.Left().ToString(Map.NumberFormatEnUs) + " AND " + XColumn + " < " + bbox.Right().ToString(Map.NumberFormatEnUs) + " AND " + YColumn + " > " + bbox.Bottom().ToString(Map.NumberFormatEnUs) + " AND " + YColumn + " < " + bbox.Top().ToString(Map.NumberFormatEnUs); drow = Table.Select(strSQL); foreach (DataRow dr in drow) { objectlist.Add((uint) (int) dr[0]); } return objectlist; }
/// <summary> /// Retrieves all features within the given BoundingBox. /// </summary> /// <param name="bbox">Bounds of the region to search.</param> /// <param name="ds">FeatureDataSet to fill data into</param> public override void ExecuteIntersectionQuery(BoundingBox bbox, FeatureDataSet ds) { DataRow[] rows; if (Table.Rows.Count == 0) { return; } string statement = XColumn + " > " + bbox.Left().ToString(Map.NumberFormatEnUs) + " AND " + XColumn + " < " + bbox.Right().ToString(Map.NumberFormatEnUs) + " AND " + YColumn + " > " + bbox.Bottom().ToString(Map.NumberFormatEnUs) + " AND " + YColumn + " < " + bbox.Top().ToString(Map.NumberFormatEnUs); rows = Table.Select(statement); FeatureDataTable fdt = new FeatureDataTable(Table); foreach (DataColumn col in Table.Columns) { fdt.Columns.Add(col.ColumnName, col.DataType, col.Expression); } foreach (DataRow dr in rows) { fdt.ImportRow(dr); FeatureDataRow fdr = fdt.Rows[fdt.Rows.Count - 1] as FeatureDataRow; fdr.Geometry = Factory.CreatePoint(new Coordinate((double) dr[XColumn], (double) dr[YColumn])); } ds.Tables.Add(fdt); }