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


14

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

Parece obvio que podríamos usar los tipos espaciales de SQL, sin embargo, no parece haber ninguna forma de (por ejemplo) 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 alguna forma de usar los tipos de forma nativa?


Esto se puede pedir mejor en StackOverflow ya que está preguntando acerca de la programación.
Ian

2
@Ian El alcance de este sitio se definió originalmente como "Sitio de preguntas y respuestas para programadores , administradores de bases de datos , cartógrafos, geógrafos y cualquier persona interesada en SIG profesionalmente" (énfasis mío)
Rowland Shaw

Respuestas:


16

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

Si es una aplicación de escritorio, la tienes un poco más fácil. Hay un buen ejemplo en el Proyecto de Código de un visor de Geometría SQL que ayudará tanto para el escritorio como para 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 existe una solución alternativa. Esencialmente, crea una vista que convierte la geometría como un varbinary (max), la usa en su mapeador OR, RIA, LINQ, etc. y luego la vuelve a convertir en el cliente. Hay un buen tutorial aquí.

Edición muy tardía: Silverlight tampoco los aceptará porque las DLL mencionadas anteriormente no están compiladas contra Silverlight. ¡Obtener versiones compatibles con Silverlight es una prioridad en la lista de deseos de muchas personas!



2

Puede usar los tipos de datos del servidor sql, puede obtenerlos de nuget o aquí: http://www.microsoft.com/en-us/download/details.aspx?id=16177 (cerca del final de la página)

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

Después de eso, necesitará un UserType personalizado para asignar el tipo sql al tipo clr en nhibernate. Por suerte para ti, este chico hizo uno: http://blogs.ugidotnet.org/mik/archive/2010/03/26/map-sql-server-2008-geography-type-with-fluent-nhibernate.aspx

Espero que esto ayude !




1

La biblioteca de objetos de datos de características (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.

http://fdo.osgeo.org


0

¿Has echado un vistazo a nHibernate ? Utiliza los tipos espaciales .NET (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 ha pedido el nivel de UI, pero aquí están mis 2 centavos: he trabajado con SharpMap, GeoAPI y descanso hace unos años. Son geniales, pero nunca llegaron a un estadio donde se puede decir que son lo suficientemente maduros para ser utilizados en una aplicación comercial. Experimenté con Silverlight y WPF API de ESRI hace un año y creé dos prototipos que usaban la API. Es genial, no es gratis, pero es realmente sólido, avanzado y hace todas las cosas que quieres que haga y más.


El bit UI es el bit fácil, ya que tenemos nuestro motor de visualización.
Rowland Shaw

0

Si está escribiendo un cliente web, una opción es utilizar el Servicio de datos espaciales ArcGIS, que actualmente está empaquetado con el producto MapIt de Esri (consulte http://resources.esri.com/MapIt ). 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 se pueden consumir como FeatureLayers en las API web de ArcGIS. Si desea un cliente de escritorio, puede usar la API de WPF.

Una alternativa para el desarrollo de escritorio es utilizar 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 2008 R2 aquí: http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52 . Desplácese hacia abajo o busque "Tipos CLR" para encontrar el enlace de descarga.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.