Esempio n. 1
0
        public void Delete(IGISFeature feature)
        {
            if (feature == null)
                throw new ArgumentNullException("feature", "A valid feature is required to be added.");

            if (_features == null)
                throw new NullReferenceException("Cannot delete feature from the InMemoryLayer. The internal list reference is NULL.");

            InMemoryGISFeature mc = FindByKeyValue(_features, feature.Attributes.GetValue(KeyFieldName));

            if (mc != null)
            {
                _features.Remove(mc);
            }
        }
Esempio n. 2
0
        public void Add(IGISFeature feature)
        {
            if (feature == null)
                throw new ArgumentNullException("feature", "A valid feature is required to be added.");

            if (_features == null)
                throw new NullReferenceException("Cannot add feature to the InMemoryLayer. The internal list reference is NULL.");

            if(FindByKeyValue(_features, feature.Attributes.GetValue(KeyFieldName)) != null)
                throw new ArgumentException("Cannot add feature. A feature with the same key already exists.");

            InMemoryGISFeature newFeature = CreateFeature();
            _features.Add(newFeature);

            newFeature.Shape = feature.Shape;

            foreach (string key in feature.Attributes.GetKeys())
            {
                newFeature.Attributes.SetValue(key, feature.Attributes.GetValue(key));
            }
        }
Esempio n. 3
0
        public static void ReadGISFeature(IGISFeature feature, TextReader reader)
        {
            if (feature == null)
                throw new ArgumentNullException("feature", "A valid feature reference is required.");
            if (reader == null)
                throw new ArgumentNullException("reader", "A valid reader object is required.");

            JsonTextReader jreader = new JsonTextReader(reader);
            ReadGISFeature(feature, jreader);
        }
Esempio n. 4
0
        public static void ReadGISFeature(IGISFeature feature, JsonTextReader jreader)
        {
            if (feature == null)
                throw new ArgumentNullException("feature", "A valid feature reference is required.");
            if (jreader == null)
                throw new ArgumentNullException("jreader", "A valid JSON reader object is required.");

            if (jreader.MoveToContent() && jreader.TokenClass == JsonTokenClass.Object)
            {
                jreader.ReadToken(JsonTokenClass.Object);

                //Read the 'Feature' as the type
                jreader.ReadMember(); //reads 'type'
                jreader.ReadString(); //reads 'Feature'

                //Read the 'geometry'
                jreader.ReadMember(); //reads 'geometry'
                feature.Shape = Read(jreader); //reads the geometry value

                //Read the 'properties'
                jreader.ReadMember(); //reads 'properties'
                ReadGISAttributes(feature.Attributes, jreader);

                jreader.ReadToken(JsonTokenClass.EndObject);
            }
        }
Esempio n. 5
0
        public static void Write(IGISFeature feature, TextWriter writer)
        {
            if (feature == null)
                return;
            if (writer == null)
                throw new ArgumentNullException("writer", "A valid text writer object is required.");

            JsonTextWriter jwriter = new JsonTextWriter(writer);
            Write(feature, jwriter);
        }
Esempio n. 6
0
        public static void Write(IGISFeature feature, JsonTextWriter jwriter)
        {
            if (feature == null)
                return;
            if (jwriter == null)
                throw new ArgumentNullException("jwriter", "A valid JSON writer object is required.");

            jwriter.WriteStartObject();

            jwriter.WriteMember("type");
            jwriter.WriteString("Feature");

            jwriter.WriteMember("geometry");
            Write(feature.Shape, jwriter);

            jwriter.WriteMember("properties");
            Write(feature.Attributes, jwriter);

            jwriter.WriteEndObject();
        }