Publicado el 1 comentario

Leer campo tipo GEOMETRY de SQL Server Spatial desde .NET

Actualmente estoy trabajando con una aplicación de generación de Fichas Catastrales apoyado en imágenes oblicuas y necesitaba almacenar las coordenadas geográficas de las construcciones. Primeramente opté por utilizar shapefiles, pero ahora con la inclusión de los tipos Geometry y Geography en la versión 2008 del Sql Server, base de datos que incluí en el proyecto, tomé la decisión de usar esta nueva característica.
Anteriormente había trabajado en Bases de Datos Geográficas utilizando la propietaria de ESRI ArcSDE y la opensource POSTGIS con Postgresql. Al igual que Postgis y Oracle Spatial, esta según dicen cumple con los estándares que recomienda la OGC. Actualmente estoy utilizando Visual Basic .Net por su facilidad de uso para el desarrollo de la aplicación.
Otro desarrollo libre aplicado en este desarrollo es la libreria SharpMap, así que combino esta libreria con la libreria de tipos de Sql Server que permite manejar desde .Net los tipos de datos Geometry y Geography.
Aqui un ejemplo de como leer un campo Geometry de una tabla desde .Net y convertirlo a objetos SharpMap:

….
Imports SharpMap.Geometries ‘clases de SharpMap
Imports Microsoft.SqlServer.Types ‘clases de Sql Server
….
….
instruccion = “select  campo_geometry from tabla_geografia”
comando.CommandText = instruccion
Dim objGeometry as SqlGeometry tipo de datos de Sql Server
Dim objGeometriaSM As SharpMap.Geometries.Polygon
Dim registros As SqlDataReader = comando.ExecuteReader()
While registros.Read()
   objGeometria = CType(registros.GetValue(0), SqlGeometry) ‘lee campo.Geometry
   objGeometriaSM = New SharpMap.Geometries.Polygon ‘objeto polígono de Sharpmap
   objGeometriaSM = SharpMap.Geometries.Polygon.GeomFromWKB(objGeometria.STAsBinary().Buffer()) ‘convierte tipo geometry a poligono de Sharpmap
   ……
End While

Espero y les sea de ayuda.