Pour un projet à venir, l'une des exigences est de stocker et d'utiliser des données géogrpahiques de base dans le cadre d'une application SQL-Server / .Net existante.
Il semble évident que nous pourrions utiliser les types SQL Spatial, cependant, il ne semble pas y avoir de moyen (par exemple) de les lire à partir du résultat d'une requête SQL, ou de sauvegarder un POI / polygone mis à jour.
Les développeurs doivent-ils vraiment gérer eux-mêmes la conversion au niveau de la procédure stockée, ou existe-t-il un moyen d'utiliser les types nativement?
.net
sql-server
Rowland Shaw
la source
la source
Réponses:
S'agit-il d'une application de bureau ou, disons, d'une application Silverlight? S'il est basé sur le Web, vous devez sauter à travers certains cerceaux. Vous pouvez créer une vue qui expose WKT, puis analyser le côté client WKT dans les géométries WPF / Silverlight.
S'il s'agit d'une application de bureau, vous l'avez beaucoup plus facile. Il existe un bon exemple dans le projet de code d'une visionneuse de géométrie SQL qui vous aidera à la fois sur le bureau ou sur le Web.
Vous devez référencer Microsoft.SqlServer.Types.dll, disponible dans SQL Server Install / 100 / SDK / Assemblies pour utiliser SQLGeometry ou SQLGeography directement.
Des technologies comme RIA ne comprennent pas ces types, mais il existe une solution. Essentiellement, vous créez une vue qui transforme la géométrie en un varbinaire (max), l'utilisez dans votre mappeur OU, RIA, LINQ, etc., puis la reconvertissez sur le client. Il y a un bon tutoriel ici
Edition très tardive: Silverlight ne les acceptera pas non plus car les DLL mentionnées précédemment ne sont pas compilées avec Silverlight. Obtenir des versions compatibles avec Silverlight figure en bonne place sur la liste de souhaits de nombreuses personnes!
la source
Vous pouvez utiliser l'API Silverlight ESRI pour visualiser les données spatiales stockées dans SQL Server 2008:
http://resources.esri.com/arcgisserver/apis/silverlight/index.cfm?fa=codeGalleryDetails&scriptID=16494
la source
Vous pouvez utiliser les types de données du serveur SQL, vous pouvez les obtenir à partir de nuget ou ici: http://www.microsoft.com/en-us/download/details.aspx?id=16177 (vers la fin de la page)
Après cela, vous pouvez utiliser nhibernate fluide, encore une fois à partir de nuget ou de ce lien: (Impossible d'insérer le lien ici car il semble que je n'ai pas 10 répétitions ...)
Après cela, vous aurez besoin d'un UserType personnalisé pour mapper le type sql au type clr dans nhibernate. Heureusement pour vous, ce gars en a fait un: http://blogs.ugidotnet.org/mik/archive/2010/03/26/map-sql-server-2008-geography-type-with-fluent-nhibernate.aspx
J'espère que cela t'aides !
la source
jetez un œil à sharpmap: http://sharpmap.codeplex.com/
la source
SharpMap est la meilleure solution. J'ai regardé tous les autres, et c'est de loin le plus robuste. Assurez-vous cependant que vous utilisez la version bêta 2.0. J'ai fait un blog à ce sujet (lien de téléchargement inclus). N'hésitez pas à y jeter un œil.
http://www.jasonkiesel.com/index.php/119/my-go-to-collection-of-net-gis-libraries/
la source
La bibliothèque FDO (Feature Data Objects) vous permet d'accéder à différents formats de données géospatiales (y compris SQL Server) via un ensemble unique d'interfaces.
La bibliothèque est en C ++, mais elle est également livrée avec un wrapper .net.
http://fdo.osgeo.org
la source
Avez-vous regardé nHibernate ? Il utilise les types spatiaux .NET (comme décrit par dmbrubac ci-dessus) mais pourrait également communiquer avec d'autres systèmes de base de données que SQL Server.
Je ne sais pas si vous avez également demandé le niveau d'interface utilisateur, mais voici mes 2 cents: j'ai travaillé avec SharpMap, GeoAPI et je me repose il y a quelques années. Ils sont super mais n'ont jamais atteint un stade où l'on peut dire qu'ils sont suffisamment matures pour être utilisés dans une application métier. J'ai expérimenté avec Silverlight et l'API WPF d'ESRI il y a un an et j'ai créé deux prototypes qui utilisaient l'API. C'est génial, ce n'est pas gratuit mais c'est vraiment solide, à la pointe de la technologie et il fait tout ce que vous voulez et plus encore.
la source
Si vous écrivez un client Web, une option consiste à utiliser le service ArcGIS Spatial Data, qui est actuellement fourni avec le produit MapIt d'Esri (voir http://resources.esri.com/MapIt ). Le service expose les tables SQL Server via un service Web RESTful. Le service Web utilise le format ArcGIS JSON, de sorte que les tables contenant des données spatiales SQL Server peuvent être utilisées en tant que FeatureLayers dans les API Web ArcGIS. Si vous voulez un client de bureau, vous pouvez utiliser l'API WPF.
Une alternative pour le développement de postes de travail consiste à utiliser les types CLR SQL Server inclus dans les packs de fonctionnalités SQL Server. Vous pouvez trouver la page de téléchargement du pack de fonctionnalités 2008 R2 ici - http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52 . Faites défiler vers le bas ou recherchez "Types CLR" pour trouver le lien de téléchargement.
la source