public List <Feature> GetFeaturesOfClass(S57Obj ObjectCode) { List <Feature> tempList = new List <Feature>(); //foreach (var feat in baseFile.eFeatureRecords) foreach (var feat in baseFile.eFeatureObjects) { if (feat.Value.ObjectCode == ObjectCode) { tempList.Add(feat.Value); } } return(tempList); }
private static void ListRelationships(S57Reader reader, S57Obj type) { var features = reader.GetFeaturesOfClass(type); for (int i = 0; i < features.Count; i++) { string description = null; features[i].Attributes.TryGetValue(S57Att.OBJNAM, out description); string rcid = features[i].namekey.RecordIdentificationNumber.ToString(); string targetinfo = null; int counter = 0; if (features[i].enhFeaturePtrs != null) { foreach (var bla in features[i].enhFeaturePtrs.FeatureList) { string relationship = ((Relationship)features[i].FeatureRecord.Fields.GetFieldByTag("FFPT").subFields.GetUInt32(counter++, "RIND")).ToString(); string targettype = ((S57Obj)(bla.ObjectCode)).ToString(); string targetname = bla.namekey.RecordIdentificationNumber.ToString(); targetinfo = targetinfo + " |" + targetname + "." + targettype + "." + relationship; } } Console.WriteLine(rcid + "." + description + targetinfo); } }
public Feature(NAMEkey _namekey, DataRecord _FeatureRecord) { namekey = _namekey; FeatureRecord = _FeatureRecord; var fspt = _FeatureRecord.Fields.GetFieldByTag("FSPT"); if (fspt != null) { enhVectorPtrs = new VectorRecordPointer(fspt.subFields); } var ffpt = _FeatureRecord.Fields.GetFieldByTag("FFPT"); if (ffpt != null) { enhFeaturePtrs = new FeatureObjectPointer(ffpt.subFields); } // FRID : Feature Record Identifier var frid = _FeatureRecord.Fields.GetFieldByTag("FRID"); if (frid != null) { Primitive = (GeometricPrimitive)frid.subFields.GetUInt32(0, "PRIM"); Group = frid.subFields.GetUInt32(0, "GRUP"); ObjectCode = (S57Obj)frid.subFields.GetUInt32(0, "OBJL"); } // FOID : Feature Object Identifier var foid = _FeatureRecord.Fields.GetFieldByTag("FOID"); if (foid != null) { subFieldRow = foid.subFields.Values[0]; tagLookup = foid.subFields.TagIndex; agen = subFieldRow.GetUInt32(tagLookup["AGEN"]); fidn = subFieldRow.GetUInt32(tagLookup["FIDN"]); fids = subFieldRow.GetUInt32(tagLookup["FIDS"]); lnam = new LongName(agen, fidn, fids); } // ATTF : Attributes var attr = _FeatureRecord.Fields.GetFieldByTag("ATTF"); if (attr != null) { Attributes = Vector.GetAttributes(attr); } // NATF : National attributes NATF. var natf = _FeatureRecord.Fields.GetFieldByTag("NATF"); if (natf != null) { var natfAttr = Vector.GetAttributes(natf); if (Attributes != null) { foreach (var entry in natfAttr) { Attributes.Add(entry.Key, entry.Value); } } else { Attributes = natfAttr; } } }