Subversion Repository Public Repository

Nextrek

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Xml.Linq;
using System.Globalization;
using System.Xml;
using System.Web;

namespace csvTojSon
{
    public class cfgSettings
    {
        public static string bingMapsApiUrl = string.Empty;
        public static string apiKeyBingMaps = string.Empty;
        public static string fileScarti = string.Empty;
        public static string xmlNameSpace = string.Empty;
    }

    public enum GoogleMapsResult
    {
        SUCCESS = 0,
        NOTEXISTS,
        OVER_QUERY_LIMIT
    }

    public class Types
    {
        [System.Serializable]
        [System.Runtime.Serialization.DataContract]
        public class CSV
        {
            [System.Runtime.Serialization.DataContract]
            public class Root
            {
                [System.Runtime.Serialization.DataMember]
                public Record[] results;
            }

            [System.Runtime.Serialization.DataContract]
            public class Record
            {
                [System.Runtime.Serialization.DataMember]
                public string den_istituzione;
                [System.Runtime.Serialization.DataMember]
                public string den_ragione_sociale;
                [System.Runtime.Serialization.IgnoreDataMember]
                public string codice_sede;
                [System.Runtime.Serialization.DataMember]
                public string den_indirizzo;
                [System.Runtime.Serialization.DataMember]
                public string den_localita;
                [System.Runtime.Serialization.DataMember]
                public string cod_cap;
                [System.Runtime.Serialization.IgnoreDataMember]
                public string cod_provincia;
                [System.Runtime.Serialization.DataMember]
                public double latitudine;
                [System.Runtime.Serialization.DataMember]
                public double longitudine;
            }

            [System.Runtime.Serialization.DataMember]
            public Root root;
        }

        [System.Serializable]
        public class GeocoderLocation
        {
            public double Longitude { get; set; }
            public double Latitude { get; set; }

            public override string ToString()
            {
                return String.Format("{0}, {1}", Latitude, Longitude);
            }
        }

        public static GeocoderLocation RecuperaCoordinate(string query)
        {
            GeocoderLocation geo = null;

            //uso la classe System.Net.WebClient per inviare la richiesta GET al servizio REST
            using (var client = new WebClient())
            {
                System.Collections.Specialized.NameValueCollection nvc = System.Configuration.ConfigurationManager.AppSettings;
                cfgSettings.fileScarti = (nvc.AllKeys.Contains("fileScarti") ? nvc["fileScarti"] : string.Empty);
                cfgSettings.bingMapsApiUrl = (nvc.AllKeys.Contains("bingMapsApiUrl") ? nvc["bingMapsApiUrl"] : string.Empty);
                cfgSettings.apiKeyBingMaps = (nvc.AllKeys.Contains("apiKeyBingMaps") ? nvc["apiKeyBingMaps"] : string.Empty);

                var url = string.Format(cfgSettings.bingMapsApiUrl, query.Replace(" ", "+"), cfgSettings.apiKeyBingMaps);

                try
                {
                    //il risultato è un documento XML
                    var risultato = client.DownloadString(url);

                    //Lo vado a leggere con un XmlDocument
                    var doc = new XmlDocument();
                    doc.LoadXml(risultato);

                    //Se voglio interrogare il documento, devo almeno caricare il namespace di default
                    var nsmgr = new XmlNamespaceManager(doc.NameTable);
                    nsmgr.AddNamespace("ns", cfgSettings.xmlNameSpace);

                    //Ora sono pronto, estraggo solo i nodi che mi interessano
                    var location = doc.DocumentElement.SelectSingleNode("//ns:Point", nsmgr);
                    if (location != null)
                    {
                        geo = new GeocoderLocation
                        {
                            Longitude = double.Parse(location.SelectSingleNode("ns:Longitude", nsmgr).InnerText, CultureInfo.InvariantCulture),
                            Latitude = double.Parse(location.SelectSingleNode("ns:Latitude", nsmgr).InnerText, CultureInfo.InvariantCulture)
                        };
                    }
                }
                catch (Exception ex)
                {
                    if (cfgSettings.fileScarti.Trim() != "") System.IO.File.AppendAllText(cfgSettings.fileScarti, ex.Message);
                }

                return geo;
            }
        }
    }
}

Commits for Nextrek/csvTojSon/csvTojSon/Types.cs

Diff revisions: vs.
Revision Author Commited Message
105 Diff Diff DTocci picture DTocci Fri 01 Aug, 2014 15:55:56 +0000
104 Diff Diff DTocci picture DTocci Fri 01 Aug, 2014 12:59:42 +0000
103 Diff Diff DTocci picture DTocci Fri 01 Aug, 2014 12:53:46 +0000
102 Diff Diff DSciarra picture DSciarra Fri 01 Aug, 2014 12:41:08 +0000
101 Diff Diff DTocci picture DTocci Thu 31 Jul, 2014 15:33:18 +0000
92 DTocci picture DTocci Fri 18 Jul, 2014 17:04:14 +0000