Jak mogę używać typów przestrzennych SQL Server z aplikacji .Net?

14

W przypadku nadchodzącego projektu jednym z wymagań jest przechowywanie i wykorzystywanie podstawowych danych geograficznych jako części istniejącej aplikacji SQL-Server / .Net.

Wydaje się oczywiste, że moglibyśmy użyć typów SQL Spatial, jednak nie wydaje się, aby można było (powiedzmy) odczytać je z wyniku zapytania SQL lub zapisać zaktualizowanego POI / wielokąta.

Czy programiści naprawdę muszą sami poradzić sobie z konwersją na poziomie procedury składowanej, czy może istnieje sposób natywnego używania typów?

Rowland Shaw
źródło
może to być lepiej zadane na StackOverflow, gdy pytasz o programowanie.
Ian
2
@Ian Zakres tej strony został pierwotnie zdefiniowany jako „strona pytań i odpowiedzi dla programistów , DBA , kartografów, geografów i wszystkich osób zainteresowanych GIS profesjonalnie” (moje wyróżnienie)
Rowland Shaw

Odpowiedzi:

16

Czy to aplikacja komputerowa, czy powiedzmy aplikacja Silverlight? Jeśli jest oparty na sieci, musisz przeskoczyć kilka obręczy. Możesz utworzyć widok pokazujący WKT, a następnie przeanalizować stronę klienta WKT w geometriach WPF / Silverlight.

Jeśli jest to aplikacja komputerowa, masz ją o wiele łatwiejszą. Jest dobry przykład w Code Project przeglądarki SQL Geometry, która pomoże zarówno na komputerze, jak i w Internecie.

Aby bezpośrednio korzystać z SQLGeometry lub SQLGeography, musisz odwołać się do Microsoft.SqlServer.Types.dll, znalezionego w SQL Server Install / 100 / SDK / Assemblies.

Technologie takie jak RIA nie rozumieją tego typu, ale istnieje obejście. Zasadniczo tworzysz widok, który rzuca geometrię jako varbinary (max), używasz jej w maperze OR, RIA, LINQ itp., A następnie konwertujesz go z powrotem na klienta. Jest dobry tutorial tutaj

Bardzo późna edycja: Silverlight też ich nie zaakceptuje, ponieważ wcześniej wspomniane biblioteki DLL nie są kompilowane przeciwko Silverlight. Uzyskiwanie wersji zgodnych z Silverlight jest wysoko na liście życzeń wielu ludzi!

dmbrubac
źródło
2

Możesz używać typów danych serwera sql, możesz je pobrać z nuget lub tutaj: http://www.microsoft.com/en-us/download/details.aspx?id=16177 (pod koniec strony)

Następnie możesz użyć płynnego nhibernate, ponownie z nuget lub tego linku: (Nie można wstawić tutaj linku, ponieważ wygląda na to, że nie mam 10 powtórzeń ...)

Następnie będziesz potrzebował niestandardowego UserType, aby zmapować typ sql na typ clr w nhibernate. Na szczęście dla ciebie ten facet zrobił jeden: http://blogs.ugidotnet.org/mik/archive/2010/03/26/map-sql-server-2008-geography-type-with-fluent-nhibernate.aspx

Mam nadzieję że to pomoże !

Alex Rouillard
źródło
1

Biblioteka Feature Data Objects (FDO) umożliwia dostęp do różnych formatów danych geoprzestrzennych (w tym SQL Server) za pomocą jednego zunifikowanego zestawu interfejsów.

Biblioteka jest w C ++, ale biblioteka jest również wyposażona w opakowanie .net.

http://fdo.osgeo.org

Jumpinjackie
źródło
0

Czy spojrzałeś na nHibernate ? Wykorzystuje przestrzenne typy .NET (jak opisano powyżej przez dmbrubac), ale może również komunikować się z innymi systemami DB niż SQL Server.

Nie wiem, czy prosiłeś o poziom interfejsu użytkownika, ale oto moje 2 centy: pracowałem z SharpMap, GeoAPI i odpoczywałem kilka lat temu. Są świetne, ale nigdy nie dotarły na stadion, na którym można powiedzieć, że są na tyle dojrzałe, że można je wykorzystać w aplikacji biznesowej. Rok temu eksperymentowałem z Silverlight i WPF API ESRI i stworzyłem dwa prototypy, które korzystały z API. Jest świetny, nie jest darmowy, ale jest naprawdę solidny, najnowocześniejszy i robi wszystko, co chcesz, i więcej.

Kitto
źródło
Bit interfejsu użytkownika jest łatwy, ponieważ mamy nasz silnik wizualizacji.
Rowland Shaw
0

Jeśli piszesz klienta WWW, jedną z opcji jest skorzystanie z usługi ArcGIS Spatial Data Service, która jest obecnie dostarczana z produktem Esri MapIt (patrz http://resources.esri.com/MapIt ). Usługa udostępnia tabele programu SQL Server za pośrednictwem usługi sieci Web RESTful. Usługa sieci Web używa formatu ArcGIS JSON, więc tabele z danymi przestrzennymi programu SQL Server można wykorzystać jako FeatureLayers w interfejsach API ArcGIS Web. Jeśli chcesz mieć klienta stacjonarnego, możesz użyć interfejsu WPF API.

Alternatywą dla rozwoju pulpitu jest użycie typów CLR SQL Server, które są dołączone do pakietów funkcji SQL Server. Stronę pobierania pakietu funkcji 2008 R2 można znaleźć tutaj - http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52 . Przewiń w dół lub znajdź „Typy CLR”, aby znaleźć link do pobrania.

zwaap
źródło