Example #1
0
        public Vector(NAMEkey _namekey, DataRecord _VectorRecord)
        {
            namekey      = _namekey;
            VectorRecord = _VectorRecord;
            var vrpt = _VectorRecord.Fields.GetFieldByTag("VRPT");

            if (vrpt != null)
            {
                enhVectorPtrs = new VectorRecordPointer(vrpt.subFields);
            }
            var attv = _VectorRecord.Fields.GetFieldByTag("ATTV");

            if (attv != null)
            {
                Attributes = GetAttributes(attv);
            }
        }
Example #2
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;
                }
            }
        }