none
C# manipular objeto do tipo SQLGeography RRS feed

  • Pergunta

  • Olá!

    Estou com um problema ao tentar manipular um objeto do tipo SQL Geography no C#.

    No seguinte trecho do código o método geo.NumRings() retorna null, mas na verdade ele deveria retornar 2:

    private   string ToXaml (object polygon, string id) 
            { 
                StringBuilder sb =   new StringBuilder (); 
    
                // Database query spatial data structure for the SQL Server spatial data types object 
                var geo = SqlGeography.STGeomFromText ( 
                new SqlChars(
                new SqlString(polygon.ToString())), 4326);
    
                // Spatial data structure for the Bing Maps graphical objects (polygons) XAML text, to resolve Xaml directly returned to the client in the Silverlight application object. 
                for (int j =   0; j < geo.NumRings(); j++) 
                { 
                    if (geo.RingN(j).STNumPoints()>   1) 
                    { 
                        sb.Append ("<m:MapPolygon "); 
                        sb.Append (" Fill=\"Red\"  Locations =\"");
                        for (int k = 1; k <= geo.RingN(j).STNumPoints(); k++) 
                        { 
                            if (k>   1) sb.Append ("   "); 
                            sb.Append (String.Format ("{0:0. # # # # #}, {1:0. # # # # #}",
                            (Double)geo.RingN(j).STPointN(k).Lat,
                            (Double)geo.RingN(j).STPointN(k).Long)); 
                        } 
                        sb.AppendLine ("\" /> "); 
                    } 
                } 
    
                return sb.ToString (); 
            }

    O objeto polygon é populado através do banco de dados, sei que o objeto está correto e contém dados pois consigo visualizar no sql server a aba "Spatial Results" ao fazer consulta nesse registro.

    Tentei adicionar um link do artigo que utilizei como base para desenvolvimento e uma imagem para mostrar como está o valor do objeto "polygon"... ele possui um valor binário muito grande (e válido) para adicionar aqui! rs

    Se alguém puder ajudar serei muito grato!

    Abraço

    quinta-feira, 2 de junho de 2016 15:22