private void getPrecints(FeatureLayer layer, Geometry geometry, GeometryDimension dimension) { var precintsList = this.getIntersectedIds(geometry, layer, dimension); var selection = layer.GetTable(); foreach (long id in precintsList) { var filter = new QueryFilter(); string idField = config.getConfig("Obręby", "areaId"); filter.WhereClause = idField + "=" + id; var wydzielenia = selection.Search(filter); while (wydzielenia.MoveNext()) { var precintRow = wydzielenia.Current; Dictionary <string, object> precintDictionary = new Dictionary <string, object>(); var fields = precintRow.GetFields(); int iterator = 0; foreach (Field field in fields) { precintDictionary.Add(field.Name, precintRow.GetOriginalValue(iterator)); iterator++; } properties.precints.Add(new PrecintModel(precintDictionary)); } } }
private async void getData(Geometry geometry, GeometryDimension dimension) { properties = new NecessaryProperties(); ArcGIS.Desktop.Mapping.MapView view = ArcGIS.Desktop.Mapping.MapView.Active; var layersTOC = ArcGIS.Desktop.Mapping.MapView.Active.Map.GetLayersAsFlattenedList(); FeatureLayer parcelsLayer = (FeatureLayer)layersTOC.Where((layer) => { return(layer.Name.Contains(config.getConfig("Działki", "parcelsLayer"))); }).First(); var parcels = ArcGIS.Desktop.Mapping.MapView.Active.Map.GetLayersAsFlattenedList(); foreach (var f in parcels) { var feat = f.Name.Equals(config.getConfig("Działki", "parcelsLayer")); if (feat) { this.parcellayer = (FeatureLayer)f; } } this.getParcel(parcelsLayer, geometry, dimension); CIMLineSymbol symbol = new CIMLineSymbol(); symbol.SetColor(ColorFactory.Instance.CreateRGBColor(255, 255, 255, 0)); foreach (ParcelModel parcelModel in properties.parcels) { object result = null; var pointsFromShape = parcelModel.parcel.TryGetValue("Shape", out result); } Polygon shp = null; foreach (Layer layer in layersTOC) { try { FeatureLayer fLayer = (FeatureLayer)layer; if (fLayer.Name.Contains(config.getConfig("MPZP", "MPZPlayer"))) { this.getMPZP(fLayer, geometry, dimension); } else if (fLayer.Name.Contains(config.getConfig("Wydzielenia", "precintLayer"))) { this.getResolution(fLayer, geometry, dimension); } else if (fLayer.Name.Contains(config.getConfig("Obręby", "areaLayer"))) { this.getPrecints(fLayer, geometry, dimension); } }catch (Exception) { } } }
public List <long> getIntersectedIds(Geometry geometry, FeatureLayer layer, GeometryDimension dimension) { List <long> intersectedObjects = new List <long>(); var table = layer.GetTable(); var selection = table.Search(); while (selection.MoveNext()) { var current = selection.Current; Polygon polygon = (Polygon)current.GetOriginalValue(current.FindField("Shape")); IGeometryEngine engine = GeometryEngine.Instance; if (!engine.Intersection(geometry, polygon, dimension).IsEmpty) { intersectedObjects.Add(current.GetObjectID()); } } return(intersectedObjects); }
private void getResolution(FeatureLayer layer, Geometry geometry, GeometryDimension dimension) { try { var resolutionList = this.getIdsFromEveryParcel(layer); var selection = layer.GetTable(); foreach (long id in resolutionList) { var cursor = getRow(id, selection); while (cursor.MoveNext()) { properties.resolutions.Add(new ResolutionModel(getData(cursor.Current))); } } } catch (Exception) { MessageBox.Show("Nie udało się pobrać danych o wydzieleniach"); } }
private void getMPZP(FeatureLayer layer, Geometry geometry, GeometryDimension dimension) { try { var lista = getIdsFromEveryParcel(layer); var selection = layer.GetTable(); foreach (long id in lista) { var cursor = getRow(id, selection); while (cursor.MoveNext()) { properties.mpzpModels.Add(new MPZPModel(getData(cursor.Current))); } } } catch (Exception e) { MessageBox.Show("Nie udało się pobrać danych o MPZP"); } }
private void getParcel(FeatureLayer layer, Geometry geometry, GeometryDimension dimension) { lista = this.getIntersectedIds(geometry, layer, dimension); var selection = layer.GetTable(); var selectFilter = new QueryFilter(); var statement = ""; for (int i = 0; i < lista.Count; i++) { long id = lista.ElementAt(i); statement += "OBJECTID=" + id; if (i < lista.Count - 1) { statement += " OR "; } var cursor = getRow(id, selection); while (cursor.MoveNext()) { properties.parcels.Add(new ParcelModel(getData(cursor.Current))); } } selectFilter.WhereClause = statement; this.parcelQuery = selectFilter; }