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