public AttributeLayer ImportujAtrybuty(LayerSchema _schema) { string _fileName = _geometryLayer.FileName; AttributeLayer atrybuty = new AttributeLayer(_schema, _fileName); atrybuty.ImportujExcel(); foreach (var atr in atrybuty.Attributes) { if (atr.ContainsName("X") && atr.ContainsName("Y")) { string x = atr["X"], y = atr["Y"]; string wkt = string.Format("POINT ({0} {1})", y, x); Geometry geometry = Geometry.CreateFromWkt(wkt); string image = atr[_schema.AttribKey]; GeometryFeature geomFeature = new GeometryFeature { Geometry = geometry, Name = "name", Value = image }; _geometryLayer.AddFeature(geomFeature); } } return(atrybuty); }
public void ImportujAtrybutyWarstwy(AttributeLayer layer) { foreach (KeyValuePair <string, GeometryFeature> kv in _features) { GeometryFeature gf = kv.Value; string geomValue = kv.Key; if (layer.ContainsKey(geomValue)) { FeatureAttributes attributes = layer[geomValue]; gf.Attributes = attributes; } else { throw new Exception("Brak atrybutów dla zasięgu: " + geomValue); } } }
public override void Importuj() { using (StreamReader reader = new StreamReader(_geometryLayer.FileName, Encoding.GetEncoding(1250))) { string wiersz = null; string photo = null, image_id = null; char[] separator = new char[] { ' ', '\t' }; while ((wiersz = reader.ReadLine()) != null) { if (wiersz.StartsWith("begin photo_parameters")) { string[] cols = wiersz.Split(separator); photo = cols[2]; } else if (wiersz.StartsWith(" image_id:")) { string[] cols = wiersz.Trim().Split(separator); image_id = cols[1]; } else if (wiersz.StartsWith(" footprint:")) { string[] cols = wiersz.Trim().Split(separator); string wkt = string.Format("POLYGON (({0} {1},{2} {3},{4} {5},{6} {7},{0} {1}))", cols[1], cols[2], cols[3], cols[4], cols[5], cols[6], cols[7], cols[8]); Geometry geometry = Geometry.CreateFromWkt(wkt); geometry = GeometryFeature.GeometryToEnvelope(geometry); string[] imageName = photo.Split('_'); string image = imageName[imageName.Length - 1]; GeometryFeature geomFeature = new GeometryFeature { Geometry = geometry, Name = "name", Value = image }; _geometryLayer.AddFeature(geomFeature); } } } }
public bool AddFeature(GeometryFeature gf) { if (gf.Name == null) { _invalidFeatures.Add(gf); return(false); } else { if (_features.ContainsKey(gf.Value)) { _invalidFeatures.Add(gf); return(false); } else { _features.Add(gf.Value, gf); } } return(true); }
private void WczytajOgrLayer(Layer layer) { List <GeometryFeature> poligony = new List <GeometryFeature>(); List <GeometryFeature> teksty = new List <GeometryFeature>(); FeatureDefn layerDef = layer.GetLayerDefn(); Feature feat = null; while ((feat = layer.GetNextFeature()) != null) { Geometry featGeom = feat.GetGeometryRef(); FeatureDefn featDef = feat.GetDefnRef(); string name = null; string value = null; //pierwsze pole tekstowe for (int i = 0; i < feat.GetFieldCount(); i++) { FieldDefn fdef = featDef.GetFieldDefn(i); if (feat.IsFieldSet(i)) { if (fdef.GetFieldType() == FieldType.OFTString) { name = fdef.GetNameRef(); value = feat.GetFieldAsString(i); break; } } } switch (featGeom.GetGeometryType()) { case wkbGeometryType.wkbPolygon: case wkbGeometryType.wkbPolygon25D: { GeometryFeature geomFeature = new GeometryFeature { Geometry = featGeom.Clone(), Name = name, Value = value }; poligony.Add(geomFeature); } break; case wkbGeometryType.wkbPoint: case wkbGeometryType.wkbPoint25D: { GeometryFeature geomFeature = new GeometryFeature { Geometry = featGeom.Clone(), Name = name, Value = value }; teksty.Add(geomFeature); } break; } feat.Dispose(); } //przypisanie tekstów do poligonów foreach (GeometryFeature gf in poligony) { //przypisz pierwszy tekst zawarty w poligonie foreach (GeometryFeature tf in teksty) { if (gf.Geometry.Contains(tf.Geometry)) { gf.Name = tf.Name; gf.Value = tf.Value; break; } } _geometryLayer.AddFeature(gf); } }