Exemplo n.º 1
0
        /// <summary>
        /// Serializes the current instance to an Xml representation - intended to be persisted in an <see cref="ExtendedDataCollection"/>
        /// </summary>
        /// <returns>An Xml string</returns>
        internal string SerializeToXml()
        {
            string xml;

            using (var sw = new StringWriter())
            {
                var settings = new XmlWriterSettings
                {
                    OmitXmlDeclaration = true
                };

                using (var writer = XmlWriter.Create(sw, settings))
                {
                    writer.WriteStartDocument();
                    writer.WriteStartElement(Constants.ExtendedDataKeys.LineItem);


                    writer.WriteElementString(Constants.ExtendedDataKeys.ContainerKey, ContainerKey.ToString());
                    writer.WriteElementString(Constants.ExtendedDataKeys.LineItemTfKey, LineItemTfKey.ToString());
                    writer.WriteElementString(Constants.ExtendedDataKeys.Sku, Sku);
                    writer.WriteElementString(Constants.ExtendedDataKeys.Name, Name);
                    writer.WriteElementString(Constants.ExtendedDataKeys.Quantity, Quantity.ToString(CultureInfo.InvariantCulture));
                    writer.WriteElementString(Constants.ExtendedDataKeys.Price, Price.ToString(CultureInfo.InvariantCulture));
                    writer.WriteStartElement(Constants.ExtendedDataKeys.ExtendedData);
                    writer.WriteRaw(ExtendedData.SerializeToXml());
                    writer.WriteEndElement();
                    writer.WriteEndElement(); // ExtendedData
                    writer.WriteEndDocument();
                }
                xml = sw.ToString();
            }

            return(xml);
        }
Exemplo n.º 2
0
        public Exceptionless.Core.Models.Data.StackFrame ToStackFrame()
        {
            var frame = new Exceptionless.Core.Models.Data.StackFrame {
                Name               = Name,
                ModuleId           = ModuleId,
                DeclaringNamespace = DeclaringNamespace,
                DeclaringType      = DeclaringType,
                IsSignatureTarget  = IsSignatureTarget,
                Column             = Column,
                FileName           = FileName,
                LineNumber         = LineNumber
            };

            if (GenericArguments != null && GenericArguments.Count > 0)
            {
                frame.GenericArguments = GenericArguments.ToGenericArguments();
            }

            if (Parameters != null && Parameters.Count > 0)
            {
                frame.Parameters = Parameters.ToParameters();
            }

            if (ExtendedData != null && ExtendedData.Count > 0)
            {
                frame.Data.AddRange(ExtendedData.ToData());
            }

            return(frame);
        }
Exemplo n.º 3
0
        public Exceptionless.Models.Data.InnerError ToInnerError()
        {
            var error = new Exceptionless.Models.Data.InnerError {
                Message = Message,
                Type    = Type,
                Code    = Code,
            };

            if (StackTrace != null && StackTrace.Count > 0)
            {
                error.StackTrace = StackTrace.ToStackTrace();
            }

            if (TargetMethod != null)
            {
                error.TargetMethod = TargetMethod.ToMethod();
            }

            if (Inner != null)
            {
                error.Inner = Inner.ToInnerError();
            }

            if (ExtendedData != null && ExtendedData.Count > 0)
            {
                error.Data.AddRange(ExtendedData.ToData());
            }

            return(error);
        }
Exemplo n.º 4
0
        public void Serializer_InheritType_Success()
        {
            Serializer serializer = new Serializer();

            ExtendedData extended = new ExtendedData();

            extended.Created  = DateTime.UtcNow;
            extended.Id       = "1";
            extended.Extended = new System.Collections.Generic.Dictionary <string, object>();
            extended.Extended.Add("key1", new object());
            extended.WorkToDo           = new Processes();
            extended.WorkToDo.Name      = "Processes";
            extended.WorkToDo.Priority  = 1;
            extended.WorkToDo.StartDate = DateTime.Now;
            extended.WorkToDo.Collection.Add(new Data()
            {
                Id = "dataCreatedInsideCOllection", Created = DateTime.UtcNow
            });

            var serialized = serializer.Serialize <ExtendedData>(extended);

            Assert.NotNull(serialized);
            Assert.Equal(104, serialized.Length);

            var deserialized = serializer.Deserialize <ExtendedData>(serialized);
        }
Exemplo n.º 5
0
        public Exceptionless.Models.Data.Method ToMethod()
        {
            var module = new Exceptionless.Models.Data.Method {
                Name               = Name,
                ModuleId           = ModuleId,
                DeclaringNamespace = DeclaringNamespace,
                DeclaringType      = DeclaringType,
                IsSignatureTarget  = IsSignatureTarget
            };

            if (GenericArguments != null && GenericArguments.Count > 0)
            {
                module.GenericArguments = GenericArguments.ToGenericArguments();
            }

            if (Parameters != null && Parameters.Count > 0)
            {
                module.Parameters = Parameters.ToParameters();
            }

            if (ExtendedData != null && ExtendedData.Count > 0)
            {
                module.Data.AddRange(ExtendedData.ToData());
            }

            return(module);
        }
Exemplo n.º 6
0
 private void EnsureExtendedData()
 {
     if (this.extendedData == null)
     {
         this.extendedData = new ExtendedData();
     }
 }
Exemplo n.º 7
0
        public static void Postfix(Ammo __instance, bool __result, Identifiable.Id id, Identifiable identifiable,
                                   int slotIdx, int count, bool overflow)
        {
            if (!__result)
            {
                return;
            }

            if (AmmoIdentifier.TryGetIdentifier(__instance, out var identifier))
            {
                if (identifiable && ExtendedData.IsRegistered(identifiable.gameObject))
                {
                    var ammo = PersistentAmmoManager.GetPersistentAmmoForAmmo(__instance.ammoModel);
                    for (int i = 0; i < count; i++)
                    {
                        ammo.DataModel.slots[slotIdx]
                        .PushTop(ExtendedData.extendedActorData[identifiable.GetActorId()]);
                    }
                }
                else
                {
                    if (!PersistentAmmoManager.HasPersistentAmmo(identifier))
                    {
                        return;
                    }
                    var ammo = PersistentAmmoManager.PersistentAmmoData[identifier];
                    for (int i = 0; i < count; i++)
                    {
                        ammo.DataModel.slots[slotIdx].PushTop(null);
                    }
                }
            }
        }
Exemplo n.º 8
0
        public override string ToHumanReadableString()
        {
            switch (Command)
            {
            case Command.ExtendedCode:
                return(String.Format(
                           "{0}, Category = {1} (0x{2}), Function = {3} (0x{4}), Data = 0x{5}",
                           base.ToHumanReadableString(),
                           ExtendedCategoryName,
                           ExtendedCategoryValue.ToString("X"),
                           ExtendedFunctionName,
                           ExtendedFunctionValue.ToString("X"),
                           ExtendedData.ToString("X").PadLeft(2, '0')));

            case Command.StatusOn:
            case Command.StatusOff:
                return(String.Format(
                           "{0}, Brightness = {1}%",
                           base.ToHumanReadableString(),
                           ExtendedBrightness));

            default:
                return(String.Format(
                           "{0}, ExtCommand = 0x{1}, Data = 0x{2}",
                           base.ToHumanReadableString(),
                           ExtendedCommand,
                           ExtendedData));
            }
        }
Exemplo n.º 9
0
        public static MapShape CreateUserShape(ShapeData data)
        {
            var shape = new MapRectangle()
            {
                Width    = data.Width,
                Height   = data.Height,
                Location = new Location(data.Latitude, data.Longitude)
            };

            var user = data.Tag as entities.User;

            if (user != null)
            {
                var propertySet = new ExtendedPropertySet();
                propertySet.RegisterProperty("Placemark.Name", "Name", typeof(string), string.Empty); // KML file defines Placemark.Name, we create a same property too.
                var extendedData = new ExtendedData(propertySet);
                extendedData.SetValue("Placemark.Name", user.UserName);

                shape.ExtendedData = extendedData;
                shape.Tag          = user;
            }

            //set CaptionTemplate
            shape.CaptionTemplate = Application.Current.FindResource("ShapeCaptionTemplate") as DataTemplate; //In the template, we use ExtendedData["Placemark.Name"] as caption

            return(shape);
        }
Exemplo n.º 10
0
 public override string ToString()
 {
     return
         (Convert.ToChar(House) +
          NibbleToHex((byte)Unit) +
          NibbleToHex((byte)Command) +
          "x" +
          ExtendedCommand.ToString("X").PadLeft(2, '0') +
          "x" +
          ExtendedData.ToString("X").PadLeft(2, '0'));
 }
Exemplo n.º 11
0
        internal ExtendedData GetExtendedData(bool create)
        {
            var data = this.extendedData;

            if (data == null && create)
            {
                var tmp = new ExtendedData();
                Interlocked.CompareExchange(ref this.extendedData, tmp, null);
                data = this.extendedData;
            }

            return(data);
        }
        public void ShouldSaveExistingCustomData()
        {
            const string Kml    = @"<ExtendedData xmlns:prefix='csm'><csm:data>Custom Data</csm:data></ExtendedData>";
            var          parser = new Parser();

            parser.ParseString(Kml, namespaces: false);
            ExtendedData data = (ExtendedData)parser.Root;

            var serializer = new Serializer();

            serializer.SerializeRaw(data);

            Assert.That(serializer.Xml, Contains.Substring("Custom Data"));
        }
Exemplo n.º 13
0
        internal ExtendedData GetExtendedData(bool create)
        {
            var data = this.parent as ExtendedData;

            if (data == null && create)
            {
                data = new ExtendedData {
                    Parent = this.parent as SyntaxNode
                };
                Interlocked.CompareExchange(ref this.parent, data, this.parent);
                data = this.parent as ExtendedData;
            }

            return(data);
        }
Exemplo n.º 14
0
        private void FillInformationLayer()
        {
            // Create extended property set.
            // It can be shared between the number
            // of the map shapes.
            ExtendedPropertySet propertySet = new ExtendedPropertySet();

            propertySet.RegisterProperty("Name", "City Name", typeof(string), String.Empty);
            propertySet.RegisterProperty("Population", "Population", typeof(int), 0);

            MapEllipse sofiaEllipse = new MapEllipse()
            {
                ShapeFill = new MapShapeFill()
                {
                    Stroke          = new SolidColorBrush(Colors.Red),
                    StrokeThickness = 2,
                    Fill            = new SolidColorBrush(Colors.Transparent)
                },
                Width    = 20,
                Height   = 20,
                Location = new Location(42.6957539183824, 23.3327663758679),
            };

            // Create extended data for the ellipse
            // using existing property set.
            ExtendedData sofiaData = new ExtendedData(propertySet);

            // Set the extended properties.
            sofiaData.SetValue("Name", "Sofia");
            sofiaData.SetValue("Population", 1300000);

            // Assign extended data to the map shape.
            sofiaEllipse.ExtendedData = sofiaData;

            // Assign tooltip which uses the extended properties.
            ToolTip tooltip        = new ToolTip();
            Binding tooltipBinding = new Binding()
            {
                Converter          = new ExtendedDataConverter(),
                ConverterParameter = "{Name}: {Population} people",
                Source             = sofiaEllipse.ExtendedData
            };

            tooltip.SetBinding(System.Windows.Controls.ToolTip.ContentProperty, tooltipBinding);
            ToolTipService.SetToolTip(sofiaEllipse, tooltip);

            this.informationLayer.Items.Add(sofiaEllipse);
        }
Exemplo n.º 15
0
        public void DeSerializer_InheritType_Success()
        {
            Serializer serializer = new Serializer();

            ExtendedData extended = new ExtendedData();

            byte[] array = new byte[] { 194, 62, 85, 58, 8, 10, 4, 107, 101, 121, 49, 18, 0, 66, 73, 194, 62, 13, 90, 11, 8, 134, 214, 153, 165, 169, 162, 151, 54, 16, 5, 74, 9, 80, 114, 111, 99, 101, 115, 115, 101, 115, 80, 1, 90, 42, 42, 27, 100, 97, 116, 97, 67, 114, 101, 97, 116, 101, 100, 73, 110, 115, 105, 100, 101, 67, 79, 108, 108, 101, 99, 116, 105, 111, 110, 50, 11, 8, 252, 212, 246, 136, 157, 160, 151, 54, 16, 5, 42, 1, 49, 50, 11, 8, 168, 232, 243, 136, 157, 160, 151, 54, 16, 5 };

            var instance = serializer.Deserialize <ExtendedData>(array);

            Assert.NotNull(instance);

            Assert.Equal("1", instance.Id);
            Assert.NotNull(instance.WorkToDo);
            Assert.NotNull(instance.Extended);
        }
        public void ShouldAllowTheReadingOfCustomData()
        {
            const string Kml    = @"<ExtendedData xmlns:camp='http://www.example.com'><camp:site number='14'>Name</camp:site></ExtendedData>";
            var          parser = new Parser();

            parser.ParseString(Kml, namespaces: false);
            ExtendedData data = (ExtendedData)parser.Root;

            UnknownElement[] customData = data.OtherData.ToArray();

            Assert.That(customData, Has.Length.EqualTo(1));
            Assert.That(customData[0].UnknownData.Name, Is.EqualTo("site"));
            Assert.That(customData[0].InnerXml, Is.EqualTo("Name"));
            Assert.That(customData[0].Attributes.Single().Name, Is.EqualTo("number"));
            Assert.That(customData[0].Attributes.Single().Value, Is.EqualTo("14"));
        }
Exemplo n.º 17
0
        private void FillInformationLayer()
        {
            // Create extended property set.
            // It can be shared between the number
            // of the map shapes.
            ExtendedPropertySet propertySet = new ExtendedPropertySet();
            propertySet.RegisterProperty("Name", "City Name", typeof(string), String.Empty);
            propertySet.RegisterProperty("Population", "Population", typeof(int), 0);

            MapEllipse sofiaEllipse = new MapEllipse()
            {
                ShapeFill = new MapShapeFill()
                {
                    Stroke = new SolidColorBrush(Colors.Red),
                    StrokeThickness = 2,
                    Fill = new SolidColorBrush(Colors.Transparent)
                },
                Width = 20,
                Height = 20,
                Location = new Location(42.6957539183824, 23.3327663758679),
            };

            // Create extended data for the ellipse
            // using existing property set.
            ExtendedData sofiaData = new ExtendedData(propertySet);

            // Set the extended properties.
            sofiaData.SetValue("Name", "Sofia");
            sofiaData.SetValue("Population", 1300000);

            // Assign extended data to the map shape.
            sofiaEllipse.ExtendedData = sofiaData;

            // Assign tooltip which uses the extended properties.
            ToolTip tooltip = new ToolTip();
            Binding tooltipBinding = new Binding()
            {
                Converter = new ExtendedDataConverter(),
                ConverterParameter = "{Name}: {Population} people",
                Source = sofiaEllipse.ExtendedData
            };
            tooltip.SetBinding(System.Windows.Controls.ToolTip.ContentProperty, tooltipBinding);
            ToolTipService.SetToolTip(sofiaEllipse, tooltip);

            this.informationLayer.Items.Add(sofiaEllipse);
        }
Exemplo n.º 18
0
        /// <summary>
        /// Creates an ExtendedData KML element from a graphic's attributes.
        /// </summary>
        /// <param name="attributes">A dictionary of graphic attributes</param>
        /// <returns></returns>
        public static ExtendedData ToExtendedData(Dictionary <string, object> attributes)
        {
            var datas = from kvp in attributes
                        where !_geometryInNameRe.IsMatch(kvp.Key)
                        select new Data
            {
                Name = kvp.Key,
                //Value = kvp.Value?.ToString() // VS 2015
                Value = kvp.Value != null?kvp.Value.ToString() : null
            };
            var xData = new ExtendedData();

            foreach (var data in datas)
            {
                xData.AddData(data);
            }
            return(xData);
        }
Exemplo n.º 19
0
        public Exceptionless.Core.Models.Data.Parameter ToParameter()
        {
            var frame = new Exceptionless.Core.Models.Data.Parameter {
                Name          = Name,
                Type          = Type,
                TypeNamespace = TypeNamespace
            };

            if (GenericArguments != null && GenericArguments.Count > 0)
            {
                frame.GenericArguments = GenericArguments.ToGenericArguments();
            }

            if (ExtendedData != null && ExtendedData.Count > 0)
            {
                frame.Data.AddRange(ExtendedData.ToData());
            }

            return(frame);
        }
Exemplo n.º 20
0
        public static void Postfix(Ammo __instance, bool __result, Identifiable.Id id, Identifiable identifiable)
        {
            if (!__result)
            {
                return;
            }

            if (AmmoIdentifier.TryGetIdentifier(__instance, out var identifier))
            {
                var count = -1;
                for (int i = 0; i < __instance.Slots.Length; i++)
                {
                    if (__instance.Slots[i]?.id == id)
                    {
                        count = i;
                        break;
                    }
                }

                if (count == -1)
                {
                    throw new Exception();
                }
                if (identifiable && ExtendedData.HasExtendedData(identifiable.gameObject))
                {
                    var ammo = PersistentAmmoManager.GetPersistentAmmoForAmmo(__instance.ammoModel);
                    ammo.DataModel.slots[count].PushTop(ExtendedData.ReadDataFromGameObject(identifiable.gameObject));
                    ammo.Sync();
                }
                else
                {
                    if (!PersistentAmmoManager.HasPersistentAmmo(identifier))
                    {
                        return;
                    }
                    var ammo = PersistentAmmoManager.GetPersistentAmmoForAmmo(__instance.ammoModel);
                    ammo.DataModel.slots[count].PushTop(null);
                    ammo.Sync();
                }
            }
        }
Exemplo n.º 21
0
        /// <summary>
        /// Registers Properties for Heat Map
        /// </summary>
        /// <param name="shape">Map Shape</param>
        private void SetAdditionalData(MapShape shape)
        {
            ExtendedData data = shape.ExtendedData;

            if (data != null)
            {
                if (!data.PropertySet.ContainsKey(COUNTRY_PERFORMANCE_FIELD))
                {
                    data.PropertySet.RegisterProperty(COUNTRY_PERFORMANCE_FIELD, "CountryPerformance", typeof(int), 0);
                }
                if (!data.PropertySet.ContainsKey(COUNTRY_YTD_FIELD))
                {
                    data.PropertySet.RegisterProperty(COUNTRY_YTD_FIELD, "CountryYTD", typeof(Decimal), Convert.ToDecimal(0));
                }
                if (!data.PropertySet.ContainsKey(BENCHMARK_YTD_FIELD))
                {
                    data.PropertySet.RegisterProperty(BENCHMARK_YTD_FIELD, "BenchmarkYTD", typeof(Decimal), Convert.ToDecimal(0));
                }

                if (heatMapInfo != null)
                {
                    string      countryID     = (string)shape.ExtendedData.GetValue("ISO_2DIGIT");
                    HeatMapData countryRecord = heatMapInfo.Where(r => r.CountryID == countryID).FirstOrDefault();

                    if (countryRecord != null)
                    {
                        shape.ExtendedData.SetValue(COUNTRY_PERFORMANCE_FIELD, (int)(countryRecord.CountryPerformance));
                        shape.ExtendedData.SetValue(COUNTRY_YTD_FIELD, countryRecord.CountryYTD);
                        shape.ExtendedData.SetValue(BENCHMARK_YTD_FIELD, countryRecord.BenchmarkYTD);
                        AddColorizerToInformationLayer(shape, countryRecord);
                    }
                    else
                    {
                        shape.ExtendedData.SetValue(COUNTRY_PERFORMANCE_FIELD, null);
                        shape.ExtendedData.SetValue(COUNTRY_YTD_FIELD, null);
                        shape.ExtendedData.SetValue(BENCHMARK_YTD_FIELD, null);
                        AddTransparentColorizerToInformationLayer(shape);
                    }
                }
            }
        }
Exemplo n.º 22
0
        public static void Postfix(Ammo __instance, bool __result, Identifiable.Id id, Identifiable identifiable,
                                   int slotIdx, int count, bool overflow)
        {
            if (!__result)
            {
                return;
            }

            if (AmmoIdentifier.TryGetIdentifier(__instance, out var identifier))
            {
                if (identifiable && ExtendedData.HasExtendedData(identifiable.gameObject))
                {
                    var ammo = PersistentAmmoManager.GetPersistentAmmoForAmmo(__instance.ammoModel);
                    if (ammo == null)
                    {
                        return;
                    }
                    for (int i = 0; i < count; i++)
                    {
                        ammo.DataModel.slots[slotIdx]
                        .PushTop(ExtendedData.ReadDataFromGameObject(identifiable.gameObject));
                    }
                    ammo.Sync();
                }
                else
                {
                    if (!PersistentAmmoManager.HasPersistentAmmo(identifier))
                    {
                        return;
                    }
                    var ammo = PersistentAmmoManager.PersistentAmmoData[identifier];
                    for (int i = 0; i < count; i++)
                    {
                        ammo.DataModel.slots[slotIdx].PushTop(null);
                    }
                    ammo.Sync();
                }
            }
        }
Exemplo n.º 23
0
        public PlacemarkRoute(List <GpsPointData> route, string lineStyleMapId) : this()
        {
            TimeSpan duration = route.Last().FixTime - route.First().FixTime;

            name         = "Route";
            description  = "Duration: " + duration;
            styleUrl     = "#" + lineStyleMapId;
            extendedData = new ExtendedData()
            {
                data = new ExtendedData.KmlData[]
                {
                    new ExtendedData.KmlData()
                    {
                        name = "Start Time", value = route.First().FixTime.ToString("s")
                    },
                    new ExtendedData.KmlData()
                    {
                        name = "Average Speed", value = AverageSpeed(route).ToString("0.0 mph")
                    },
                }
            };
            lineString = new LineString(route);
        }
Exemplo n.º 24
0
        public PlacemarkPoint(List <GpsPointData> gps, int idx,
                              string iconStyleMapNameGreen, string iconStyleMapNameYellow, string iconStyleMapNameRed)
            : this()
        {
            TimeSpan duration = (gps[idx].FixTime - gps[0].FixTime);

            name         = "Location: " + idx;
            description  = string.Format("Point {0} from start", duration);
            styleUrl     = "#" + PointColor(gps[idx], iconStyleMapNameGreen, iconStyleMapNameYellow, iconStyleMapNameRed);
            extendedData = new ExtendedData()
            {
                data = new ExtendedData.KmlData[]
                {
                    new ExtendedData.KmlData()
                    {
                        name = "TimeStamp", value = gps[idx].FixTime.ToString()
                    },
                    new ExtendedData.KmlData()
                    {
                        name = "Speed", value = gps[idx].SpeedMph.ToString("0.0 mph")
                    },
                    new ExtendedData.KmlData()
                    {
                        name = "Heading", value = gps[idx].Course.ToString("0.0")
                    },
                    new ExtendedData.KmlData()
                    {
                        name = "Lattitude", value = gps[idx].Latitude.ToString("0.000000")
                    },
                    new ExtendedData.KmlData()
                    {
                        name = "Longtitude", value = gps[idx].Longitude.ToString("0.000000")
                    }
                }
            };
            point = new KmlPoint(gps[idx]);
        }
Exemplo n.º 25
0
        public void Read(BinaryReader reader)
        {
            data.Clear();
            var count = reader.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                bool shouldbenull = reader.ReadBoolean();
                if (shouldbenull)
                {
                    data.Add(null);
                }
                else
                {
                    var piece = DataPiece.Deserialize(reader) as CompoundDataPiece;
                    ExtendedData.CullMissingModsFromData(piece);
                    if (piece.DataList.Count == 0)
                    {
                        piece = null;
                    }
                    data.Add(piece);
                }
            }
        }
Exemplo n.º 26
0
 public static void Postfix(GameModel __instance, long actorId, GameObject gameObj, bool skipNotify)
 {
     ExtendedData.OnRegisterActor(__instance, actorId, gameObj, skipNotify);
 }
 public ExtendedValue GetExtendedValue(string attributeName)
 {
     ExtendedData.TryGetValue(attributeName, out var value);
     return(value);
 }
Exemplo n.º 28
0
        /// <summary>
        /// converte la feature class in kml. Se non sono presenti le coordinate il dato non viene inserito
        /// </summary>
        /// <param name="sourceWorkspace">workspace con la feature class</param>
        /// <param name="outputName">nome della feature class e del csv di output</param>
        /// <param name="targetPath">percorso dove salvare il file di output</param>
        /// <param name="delimitator">delimitatore utilizzato nel csv</param>
        private void ConvertFeatureClassPointToKml(IWorkspace sourceWorkspace, string outputName, string targetPath)
        {
            IFeatureCursor featureCursor = null;

            try
            {
                IFeatureWorkspace featureWorkspace = sourceWorkspace as IFeatureWorkspace;
                IFeatureClass     featureClass     = featureWorkspace.OpenFeatureClass(outputName);
                if (featureClass.ShapeType != esriGeometryType.esriGeometryPoint)
                {
                    throw new Exception($"Per esportare in {Enum.GetName(typeof(FileExtension), FileExtension.kmz)} occorre una feature class di tipo {Enum.GetName(typeof(esriGeometryType), esriGeometryType.esriGeometryPoint)}!");
                }

                featureCursor = featureClass.Search(null, true);

                var folder = new Folder();
                folder.Id   = outputName;
                folder.Name = outputName;

                Dictionary <int, string> fields = new Dictionary <int, string>();
                IField field = null;
                for (int i = 0; i < featureCursor.Fields.FieldCount; i++)
                {
                    field = featureCursor.Fields.Field[i];
                    if ((field.Type == esriFieldType.esriFieldTypeBlob) || (field.Type == esriFieldType.esriFieldTypeGeometry) ||
                        (field.Type == esriFieldType.esriFieldTypeGlobalID) || (field.Type == esriFieldType.esriFieldTypeGUID) ||
                        (field.Type == esriFieldType.esriFieldTypeRaster) || (field.Type == esriFieldType.esriFieldTypeXML))
                    {
                        continue;
                    }

                    fields.Add(i, field.Name);
                }

                IFeature     feature      = null;
                Placemark    placemark    = null;
                Vector       vector       = null;
                ExtendedData extendedData = null;
                while ((feature = featureCursor.NextFeature()) != null)
                {
                    if ((feature.ShapeCopy == null) || (feature.ShapeCopy.IsEmpty))
                    {
                        continue;
                    }

                    IPoint p = feature.ShapeCopy as IPoint;
                    if (p.SpatialReference.FactoryCode != Helper.SpatialReferenceWGS84.FactoryCode)
                    {
                        p.Project(Helper.SpatialReferenceWGS84);
                    }

                    vector = new Vector(p.Y, p.X);


                    placemark      = new Placemark();
                    placemark.Id   = feature.OID.ToString();
                    placemark.Name = feature.OID.ToString();

                    extendedData = new ExtendedData();
                    foreach (int i in fields.Keys)
                    {
                        Data data = new Data();
                        data.DisplayName = fields[i];
                        data.Name        = fields[i];
                        data.Value       = feature.get_Value(i).ToString();
                        extendedData.AddData(data);
                    }

                    placemark.ExtendedData = extendedData;
                    placemark.Geometry     = new SharpKml.Dom.Point {
                        Coordinate = vector
                    };

                    folder.AddFeature(placemark);
                }

                Kml kml = new Kml();
                kml.AddNamespacePrefix(KmlNamespaces.GX22Prefix, KmlNamespaces.GX22Namespace);
                kml.Feature = folder;
                KmlFile kmlfile = KmlFile.Create(kml, false);
                using (var stream = File.OpenWrite(System.IO.Path.Combine(targetPath, System.IO.Path.ChangeExtension(outputName, Enum.GetName(typeof(FileExtension), FileExtension.kmz)))))
                {
                    kmlfile.Save(stream);
                }
            }
            catch
            {
                throw;
            }
            finally
            {
                if (featureCursor != null)
                {
                    Marshal.FinalReleaseComObject(featureCursor);
                }
            }
        }
Exemplo n.º 29
0
        double ComputeHeadingFromPacks(int frameId, IEnumerable <BlobPack> packs, Image <Bgr, Byte> compass_frame, DebugState debugState)
        {
            var frame       = Timeline.Data[frameId];
            var my_extended = new ExtendedData();

            frame.Heading.ForIndicatorUse = my_extended;

            var    choices      = new List <Tuple <double, double, string, Image <Gray, byte> > >();
            double unused_angle = 0;

            var p = packs.OrderByDescending(px => px.BlobRationAngle);

            foreach (var pack in packs)
            {
                var b = pack.BlobBox;
                b.Inflate(2, 2);

                var small_angle = pack.BlobRationAngle;
                var str         = ResolveTextFromPreviousFrame(frameId, small_angle);

                if (string.IsNullOrWhiteSpace(str))
                {
                    str = GetText(pack.BlobImage, debugState);
                }

                if (str == "N" || str == "E" || str == "S" || str == "W")
                {
                    small_angle = 360 - Math.Abs(small_angle);
                    double new_heading = 0;
                    switch (str)
                    {
                    case "N":
                        my_extended.LastN = pack.BlobRationAngle;
                        new_heading       = small_angle;
                        CvInvoke.Rectangle(compass_frame, b, new Bgr(Color.Blue).MCvScalar, 1);
                        break;

                    case "E":
                        my_extended.LastE = pack.BlobRationAngle;
                        new_heading       = (small_angle + 90);
                        CvInvoke.Rectangle(compass_frame, b, new Bgr(Color.Yellow).MCvScalar, 1);
                        break;

                    case "S":
                        my_extended.LastS = pack.BlobRationAngle;
                        new_heading       = (small_angle + 180);
                        CvInvoke.Rectangle(compass_frame, b, new Bgr(Color.Red).MCvScalar, 1);
                        break;

                    case "W":
                        my_extended.LastW = pack.BlobRationAngle;
                        new_heading       = (small_angle + 270);
                        CvInvoke.Rectangle(compass_frame, b, new Bgr(Color.Lime).MCvScalar, 1);
                        break;
                    }

                    new_heading = Math2.ClampAngle(new_heading);
                    choices.Add(new Tuple <double, double, string, Image <Gray, byte> >(new_heading, small_angle, str, pack.BlobImage));
                }
                else
                {
                    unused_angle = pack.BlobRationAngle;
                }
            }

            // Fill in exactly one missing quadrant.
            if (choices.Count == 3 && packs.Count() == 4)
            {
                var letters = new List <string>()
                {
                    "N", "E", "S", "W"
                };
                foreach (var c in choices)
                {
                    letters.Remove(c.Item3);
                }

                var o_angle = unused_angle;
                unused_angle = 360 - Math.Abs(unused_angle);

                double new_heading = 0;
                var    str         = letters.First();
                switch (str)
                {
                case "N":
                    my_extended.LastN = o_angle;
                    new_heading       = unused_angle;
                    break;

                case "E":
                    my_extended.LastE = o_angle;
                    new_heading       = (unused_angle + 90);
                    break;

                case "S":
                    my_extended.LastS = o_angle;
                    new_heading       = (unused_angle + 180);
                    break;

                case "W":
                    my_extended.LastW = o_angle;
                    new_heading       = (unused_angle + 270);
                    break;
                }

                new_heading = Math2.ClampAngle(new_heading);
                choices.Add(new Tuple <double, double, string, Image <Gray, byte> >(new_heading, (int)unused_angle, str, null));
            }

            if (choices.Count == 4)
            {
                // Exclude invalid combinations
                if (choices.Where(ct => ct.Item3 == "N").Count() > 1)
                {
                    debugState.SetError("Bad N");
                    return(double.NaN);
                }
                if (choices.Where(ct => ct.Item3 == "E").Count() > 1)
                {
                    debugState.SetError("Bad E");
                    return(double.NaN);
                }
                if (choices.Where(ct => ct.Item3 == "S").Count() > 1)
                {
                    debugState.SetError("Bad S");
                    return(double.NaN);
                }
                if (choices.Where(ct => ct.Item3 == "W").Count() > 1)
                {
                    debugState.SetError("Bad W");
                    return(double.NaN);
                }

                var p1 = Math2.AddAngles(choices[0].Item1, choices[1].Item1);
                var p2 = Math2.AddAngles(choices[2].Item1, choices[3].Item1);
                return(Math2.AddAngles(p1, p2));
            }
            else
            {
                debugState.SetError($"Bad choices {choices.Count}");
            }
            return(double.NaN);
        }
Exemplo n.º 30
0
        internal void AppendStackFrame(StringBuilder sb, string methodPrefix = "at ", bool appendNewLine = false, bool includeOffsets = false, bool includeColumn = false, bool linkFilePath = false, string traceIndentValue = "   ")
        {
            if (!String.IsNullOrEmpty(traceIndentValue))
            {
                sb.Append(traceIndentValue);
            }

            if (!String.IsNullOrEmpty(methodPrefix))
            {
                sb.Append(methodPrefix);
            }

            if (String.IsNullOrEmpty(Name))
            {
                sb.Append("<null>");

                if (appendNewLine)
                {
                    sb.Append(Environment.NewLine);
                }

                return;
            }

            AppendMethod(sb);

            if (includeOffsets && (ExtendedData.ContainsKey("ILOffset") || ExtendedData.ContainsKey("NativeOffset")))
            {
                sb.AppendFormat(" at offset {0}", ExtendedData["ILOffset"] ?? ExtendedData["NativeOffset"]);
            }

            if (!String.IsNullOrEmpty(FileName))
            {
                sb.Append(" in ");
                if (!linkFilePath)
                {
                    sb.Append(FileName);
                }
                else
                {
                    Uri uri;
                    if (Uri.TryCreate(FileName, UriKind.Absolute, out uri))
                    {
                        sb.AppendFormat("<a href=\"").Append(uri.AbsoluteUri).Append("\" target=\"_blank\">").Append(FileName).Append("</a>");
                    }
                    else
                    {
                        sb.Append(FileName);
                    }
                }

                if (LineNumber > 0)
                {
                    sb.Append(":line ").Append(LineNumber);
                }

                if (includeColumn && Column > 0)
                {
                    sb.Append(":col ").Append(Column);
                }
            }

            if (appendNewLine)
            {
                sb.Append(Environment.NewLine);
            }
        }
Exemplo n.º 31
0
 private Dictionary <string, string> ExtendedDataToDictionary(ExtendedData extendedData)
 {
     return((extendedData != null) ? extendedData.Data.ToDictionary(v => v.DisplayName, v => v.Value) : null);
 }