Come posso usare i tipi spaziali di SQL Server da un'applicazione .Net?


14

Per un progetto imminente, uno dei requisiti è quello di archiviare e utilizzare i dati geografici di base come parte di un'applicazione SQL Server / .Net esistente.

Sembra ovvio che potremmo usare i tipi spaziali SQL, tuttavia, non sembra esserci alcun modo per (diciamo) leggerli dal risultato di una query SQL o per salvare un POI / poligono aggiornato.

Gli sviluppatori devono davvero gestire autonomamente la conversione a livello di procedura memorizzata o esiste un modo per utilizzare i tipi in modo nativo?


questo potrebbe essere meglio chiesto su StackOverflow mentre stai chiedendo informazioni sulla programmazione.
Ian,

2
@Ian Lo scopo di questo sito è stato originariamente definito come "Sito di domande e risposte per programmatori , DBA , cartografi, geografi e chiunque sia interessato a GIS in modo professionale" (sottolineatura mia)
Rowland Shaw,

Risposte:


16

Si tratta di un'applicazione desktop o, diciamo un'applicazione Silverlight? Se è basato sul web devi saltare attraverso alcuni cerchi. È possibile creare una vista che espone WKT e quindi analizzare il lato client WKT nelle geometrie WPF / Silverlight.

Se si tratta di un'applicazione desktop, è molto più semplice. C'è un buon esempio nel Progetto Codice di un visualizzatore Geometria SQL che aiuterà sia sul desktop che sul web.

È necessario fare riferimento a Microsoft.SqlServer.Types.dll, disponibile in SQL Server Install / 100 / SDK / Assembly per utilizzare direttamente SQLGeometry o SQLGeography.

Tecnologie come la RIA non comprendono questi tipi ma esiste una soluzione. In sostanza, si crea una vista che proietta la geometria come varbinary (max), la si utilizza nel proprio mapper OR, RIA, LINQ, ecc., Quindi la si converte nuovamente sul client. C'è un buon tutorial qui

Modifica molto tardiva: Silverlight non le accetterà nemmeno perché le DLL precedentemente menzionate non sono compilate su Silverlight. Ottenere versioni compatibili con Silverlight è in cima alla lista dei desideri di molte persone!



2

Puoi utilizzare i tipi di dati del server sql, puoi ottenerli da Nuget o qui: http://www.microsoft.com/en-us/download/details.aspx?id=16177 (vicino alla fine della pagina)

Dopodiché, puoi usare fluente nhibernate, di nuovo da Nuget o questo link: (Impossibile inserire il link qui perché sembra che non abbia 10 ripetizioni ...)

Successivamente, sarà necessario un UserType personalizzato per mappare il tipo sql al tipo clr in nhibernate. Fortunatamente per te, questo ragazzo ne ha creato uno: http://blogs.ugidotnet.org/mik/archive/2010/03/26/map-sql-server-2008-geography-type-with-fluent-nhibernate.aspx

Spero che sia di aiuto !




1

La libreria Feature Data Objects (FDO) consente di accedere a vari formati di dati geospaziali (incluso SQL Server) attraverso un unico set unificato di interfacce.

La libreria è in C ++, ma include anche un wrapper .net.

http://fdo.osgeo.org


0

Hai dato un'occhiata a nHibernate ? Utilizza i tipi spaziali .NET (come descritto da dmbrubac sopra) ma potrebbe anche comunicare con altri sistemi DB diversi da SQL Server.

Non so se hai richiesto anche il livello dell'interfaccia utente, ma qui ci sono i miei 2 centesimi: ho lavorato con SharpMap, GeoAPI e riposo qualche anno fa. Sono fantastici ma non hanno mai raggiunto uno stadio in cui puoi dire che sono abbastanza maturi per essere utilizzati in un'applicazione aziendale. Un anno fa ho sperimentato l'API Silverlight e WPF di ESRI e ho creato due prototipi che utilizzavano l'API. È fantastico, non è gratuito ma è davvero solido, all'avanguardia e fa tutte le cose che vuoi che facciano e altro ancora.


Il bit dell'interfaccia utente è il bit facile, poiché abbiamo il nostro motore di visualizzazione.
Rowland Shaw,

0

Se si sta scrivendo un client Web, un'opzione è utilizzare ArcGIS Spatial Data Service, che è attualmente fornito con il prodotto MapIt di Esri (consultare http://resources.esri.com/MapIt ). Il servizio espone le tabelle di SQL Server tramite un servizio Web RESTful. Il servizio Web utilizza il formato JSON di ArcGIS, pertanto le tabelle con dati spaziali di SQL Server possono essere utilizzate come FeatureLayer nelle API Web di ArcGIS. Se si desidera un client desktop, è possibile utilizzare l'API WPF.

Un'alternativa per lo sviluppo desktop consiste nell'utilizzare i tipi CLR di SQL Server inclusi con i feature pack di SQL Server. È possibile trovare la pagina di download per il feature pack 2008 R2 qui: http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52 . Scorri verso il basso o cerca "Tipi CLR" per trovare il link per il download.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.