FromGeoJson() public method

public FromGeoJson ( Newtonsoft.Json.Linq.JObject geoJsonObject, bool newObject = true ) : IConvertibleGeoJson
geoJsonObject Newtonsoft.Json.Linq.JObject
newObject bool
return IConvertibleGeoJson
Exemplo n.º 1
0
        public IConvertibleGeoJson FromGeoJson(JObject geoJsonObject, bool newObject = true)
        {
            var poi = (newObject) ? new PoI() : this;

            //var lockId = f["properties"]["lock"].Value<string>();
            //var pos = f["properties"]["pos"].Value<string>();
            //var angle = f["properties"]["angle"].Value<double>();
            foreach (var prp in geoJsonObject["properties"].OfType<JProperty>())
            {
                // TODO REVIEW There are more properties of PoIs that should not end up in the labels, but should be set to a property. Mentioned under ToGeoJson:
                // Orientation, ContentId, Layer, Date, MaxItems.
                if (Equals(prp.Name, "Id"))
                {
                    poi.PoiId = prp.Value.ToString();
                }
                else if (Equals(prp.Name, "FeatureTypeId"))
                {
                    poi.PoiTypeId = prp.Value.ToString();
                }
                else
                {
                    poi.Labels[prp.Name] = prp.Value.ToString().RestoreInvalidCharacters();
                }
            }

            JToken keywordToken;
            if (geoJsonObject.TryGetValue("keywords", out keywordToken))
            {
                var histogram = new WordHistogram();
                histogram.FromGeoJson(keywordToken.ToString(Formatting.None), false); // Not very efficient.
                Keywords = histogram;
            }

            var wkt = (new WellKnownTextIO().FromGeoJson(geoJsonObject["geometry"].ToString(Formatting.None), false)).ToString(); // TODO More efficiency if we allow JObjects as input.                
            if (!string.IsNullOrEmpty(wkt))
            {
                poi.WktText = wkt;
            }

            return poi;
        }