¿Cómo puedo usar los tipos espaciales de SQL Server desde una aplicación .Net?

15

Para un próximo proyecto, uno de los requisitos es almacenar y usar datos geográficos básicos como parte de una aplicación SQL-Server / .Net existente.

Parece obvio que podríamos usar los tipos espaciales de SQL, sin embargo, no parece haber ninguna forma de (decir) leerlos del resultado de una consulta SQL, o guardar un POI / polígono actualizado.

¿Los desarrolladores realmente tienen que manejar la conversión ellos mismos en el nivel de procedimiento almacenado, o hay una forma de usar los tipos de forma nativa?

    
pregunta Rowland Shaw 27.07.2010 - 15:18

8 respuestas

16

¿Es esta una aplicación de escritorio o, digamos, una aplicación de Silverlight? Si está basado en la web, tienes que saltar a través de algunos aros. Podría crear una vista que exponga WKT y luego analizar el lado del cliente WKT en las geometrías WPF / Silverlight.

Si es una aplicación de escritorio, la tienes bastante más fácil. Hay un buen ejemplo en el Proyecto de código de un visor de geometría SQL que ayudará tanto en el escritorio como en la web .

Debe hacer referencia a Microsoft.SqlServer.Types.dll, que se encuentra en SQL Server Install / 100 / SDK / Assemblies para usar SQLGeometry o SQLGeography directamente.

Las tecnologías como RIA no entienden estos tipos pero hay una solución alternativa. Esencialmente, crea una vista que convierte la geometría como varbinary (max), la utiliza en su asignador OR, RIA, LINQ, etc. y luego la convierte de nuevo en el cliente. Hay un buen tutorial aquí

Edición muy tardía: Silverlight tampoco los aceptará porque los archivos DLL mencionados anteriormente no se compilan contra Silverlight. ¡Obtener versiones compatibles con Silverlight es lo más alto en la lista de deseos de muchas personas!

    
respondido por el dmbrubac 27.07.2010 - 15:30
3

Puede usar Silverlight ESRI API para visualizar datos espaciales almacenados en SQL Server 2008:

enlace

    
respondido por el user462 04.08.2010 - 05:27
2

Puede usar los tipos de datos del servidor SQL, puede obtenerlos desde nuget o aquí: enlace (cerca del final de la página)

Después de eso, puedes usar nhibernate fluido, de nuevo desde nuget o este enlace: (No se pudo insertar el enlace aquí porque parece que no tengo 10 representantes ...)

Después de eso, necesitará un UserType personalizado para asignar el tipo de sql al tipo de clr en nhibernate. Por suerte para ti, este chico hizo uno: enlace

Espero que esto ayude!

    
respondido por el Alex Rouillard 04.05.2012 - 23:41
1

Eche un vistazo a sharpmap: enlace

    
respondido por el D_Guidi 04.08.2010 - 11:29
1

SharpMap es la mejor solución. He mirado a todos los demás, y es, con mucho, el más robusto. Sin embargo, asegúrate de estar usando la versión beta 2.0. He hecho una publicación de blog al respecto (se incluye el enlace de descarga). Siéntase libre de comprobarlo.

enlace

    
respondido por el Jason 04.08.2010 - 18:21
1

La biblioteca Feature Data Objects (FDO) le permite acceder a varios formatos de datos geoespaciales (incluido SQL Server) a través de un único conjunto unificado de interfaces.

La biblioteca está en C ++, pero la biblioteca también viene con un contenedor .net.

enlace

    
respondido por el jumpinjackie 06.08.2010 - 03:54
0

¿Ha visto nHibernate ? Utiliza los tipos de .NET espaciales (como se describe anteriormente en dmbrubac) pero también podría comunicarse con otros sistemas de bases de datos que no sean el servidor SQL.

No sé si también has pedido el nivel de UI, pero aquí están mis 2 centavos: he trabajado con SharpMap, GeoAPI y el resto hace unos años. Son geniales, pero nunca llegaron a un estadio donde se puede decir que son lo suficientemente maduros como para usarlos en una aplicación comercial. Experimenté con la API de Silverlight y WPF de ESRI hace un año y creé dos prototipos que utilizaban la API. Es genial, no es gratis, pero es realmente sólido, con tecnología de punta y hace todo lo que quieres que haga y más.

    
respondido por el Kitto 06.08.2010 - 11:30
0

Si está escribiendo un cliente web, una opción es usar el Servicio de datos espaciales de ArcGIS, que actualmente está empaquetado con el producto MapIt de Esri (consulte enlace ). El servicio expone las tablas de SQL Server a través de un servicio web RESTful. El servicio web utiliza el formato ArcGIS JSON, por lo que las tablas con datos espaciales de SQL Server pueden consumirse como FeatureLayers en las API web de ArcGIS. Si desea un cliente de escritorio, puede utilizar la API de WPF.

Una alternativa para el desarrollo de escritorio es usar los tipos CLR de SQL Server que se incluyen con los paquetes de características de SQL Server. Puede encontrar la página de descarga del paquete de características de R2 de 2008 aquí: enlace . Desplácese hacia abajo o busque "Tipos de CLR" para encontrar el enlace de descarga.

    
respondido por el zwaap 30.10.2010 - 16:09

Lea otras preguntas en las etiquetas