Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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;
                }
            }
        }