public FeatureDataSet getFeatureDataSetForLayer(VectorLayer layer) { FeatureDataSet fds = new FeatureDataSet(); if (layer.IsQueryEnabled) { layer.ExecuteIntersectionQuery(layer.Envelope, fds); } return(fds); }
public JsonResult GetData(string layer, int z, int x, int y) { if (String.IsNullOrEmpty(layer)) { throw new ArgumentNullException("layer"); } Map map = ShapefileHelper.Spherical(); IQueryable <VectorLayer> coll = map.Layers .AsQueryable() .OfType <VectorLayer>() .Where(l => l.Enabled && l.IsQueryEnabled) .Where(l => String.Equals(l.LayerName, layer)); VectorLayer query = coll.SingleOrDefault(); if (query == null) { throw new ArgumentException("Layer not found: " + layer); } if (query.SRID != 4326) { throw new ArgumentException("Only EPSG:4326 supported"); } using (Utf8Grid grid = new Utf8Grid(UtfGridResolution, x, y, z)) { Envelope bbox = this.GetBoundingBoxInLatLngWithMargin(x, y, z); var ds = new FeatureCollectionSet(); query.ExecuteIntersectionQuery(bbox, ds); IEnumerable <GeoJSON> data = GeoJSONHelper.GetData(ds); int i = 1; foreach (GeoJSON val in data) { IGeometry geom = val.Geometry; IDictionary <string, object> dict = val.Values; grid.FillPolygon(geom, i, dict); i = i + 1; } Utf8GridResults results = grid.CreateUtfGridJson(); return(this.Json(new { keys = results.Keys, data = results.Data, grid = results.Grid, }, JsonRequestBehavior.AllowGet)); } }
public FeatureDataSet GetFeatureDataSet(LayerCollection layers, Coordinate coord, double areaSize) { IGeometry geometry = getGeometryFromPoint(coord, areaSize); FeatureDataSet fds = new FeatureDataSet(); for (int i = 0; i < layers.Count; ++i) { if (layers[i] is VectorLayer) { VectorLayer layer = (VectorLayer)layers[i]; if (layer.IsQueryEnabled) { layer.ExecuteIntersectionQuery(geometry.EnvelopeInternal, fds); } } } return(fds); }
public void TestMap() { var m = new Map(new Size(1024, 786)) { BackColor = Color.FloralWhite }; const string samplePath = @"D:\GIS\FileGDB\samples\data\Topo.gdb"; var p = new FileGdbProvider(samplePath); foreach (var fc in p.GetFeatureClasses("\\USA")) { if (fc.StartsWith("\\USA\\T")) { continue; } Console.WriteLine(fc); var pUse = new FileGdbProvider(samplePath) { Table = fc }; var vl = new VectorLayer("Layer:" + fc, pUse) { SmoothingMode = SmoothingMode.HighQuality, Style = { Fill = RandomBrush(), Line = RandomPen() } }; m.Layers.Add(vl); var fds = new FeatureDataSet(); vl.ExecuteIntersectionQuery(vl.Envelope, fds); fds.Tables[0].TableName = fc; var res = fds.Tables[0].Rows[0].ItemArray; foreach (DataColumn col in fds.Tables[0].Columns) { Console.Write(string.Format("{0} [{1}], ", col.ColumnName, col.DataType)); } Console.WriteLine(); foreach (var item in res) { Console.Write(string.Format(CultureInfo.InvariantCulture, "{0}, ", item)); } Console.WriteLine(); Console.WriteLine(pUse.GetGeometryByID(1)); var r = pUse.GetFeature(1); foreach (var item in r.ItemArray) { Console.Write(string.Format(CultureInfo.InvariantCulture, "{0}, ", item)); } Console.WriteLine(); Console.WriteLine(); } Console.WriteLine(); p.Dispose(); m.ZoomToExtents(); var b = m.GetMap(); b.Save("fgdb-usa-states.png"); //var fds = new FeatureDataSet(); //lc.ExecuteIntersectionQuery(m.GetExtents().GetCentroid(), fds); //fds.Tables[0].TableName = lc.LayerName; //fds.Tables[0].WriteXml(Console.Out); }