Як я можу використовувати просторові типи SQL Server із програми .Net?


14

Для майбутнього проекту однією з вимог є зберігання та використання основних геогрпахічних даних у складі існуючої програми SQL-Server / .Net.

Здається очевидним, що ми могли використовувати типи просторових SQL, однак, схоже, немає способу (скажімо) їх прочитати в результаті запиту SQL або зберегти оновлений POI / полігон.

Чи дійсно розробникам доводиться самостійно проводити перетворення на рівні зберіганої процедури, чи існує спосіб використання типів на самому собі?


це може бути краще запитати в StackOverflow, як ви запитуєте про програмування.
Ян

2
@Ian Обсяг цього веб-сайту був спочатку визначений як "Q&A-сайт для програмістів , DBA , картографів, географів та всіх, хто цікавиться ГІС професійно" (акцент мій)
Rowland Shaw

Відповіді:


16

Це настільний додаток або, скажімо, додаток Silverlight? Якщо це веб-версія, вам доведеться перестрибувати кілька обручів. Ви можете створити подання, яке розкриває WKT, а потім проаналізувати сторону клієнта WKT на геометрію WPF / Silverlight.

Якщо це настільний додаток, ви отримаєте його трохи простіше. Є хороший приклад у програмі Code Project переглядача геометрії SQL, який допоможе як для робочого столу, так і для Інтернету.

Вам потрібно посилатися на Microsoft.SqlServer.Types.dll, знайдений при встановленні SQL Server / 100 / SDK / Асамблеї, щоб безпосередньо використовувати SQLGeometry або SQLGeography.

Такі технології, як RIA, не розуміють цих типів, але існує проблема. По суті, ви створюєте подання, яке формує геометрію як варбінарну (макс.), Використовуєте її у своєму АБО Mapper, RIA, LINQ тощо, а потім перетворюєте її назад на клієнта. Існує хороший підручник тут

Дуже пізно редагування: Silverlight також не сприйме їх, оскільки згадані раніше DLL не складені проти Silverlight. Отримання версій, сумісних із Silverlight, входить у список бажань багатьох людей!



2

Ви можете використовувати типи даних сервера sql, ви можете отримати їх з nuget або тут: http://www.microsoft.com/en-us/download/details.aspx?id=16177 (в кінці сторінки)

Після цього ви можете використовувати вільний нібернат, знову-таки з nuget або за цим посиланням: (Не вдалося вставити посилання сюди, бо схоже, що у мене немає 10 повторень ...)

Після цього вам знадобиться користувацький UserType, щоб зіставити тип sql з типом clr в nhibernate. Пощастило вам, цей хлопець зробив одне: http://blogs.ugidotnet.org/mik/archive/2010/03/26/map-sql-server-2008-geography-type-with-fluent-nhibernate.aspx

Сподіваюся, це допомагає!



1

SharpMap - найкраще рішення. Я подивився на всіх інших, і це, безумовно, найбільш надійний. Переконайтеся, що ви використовуєте версію 2.0 бета-версії. Я створив про це щоденник (посилання для завантаження включене). Ви можете перевірити це.

http://www.jasonkiesel.com/index.php/119/my-go-to-collection-of-net-gis-libraries/


1

Бібліотека функціональних об'єктів даних (FDO) дозволяє отримати доступ до різних геопросторових форматів даних (включаючи SQL Server) через єдиний уніфікований набір інтерфейсів.

Бібліотека знаходиться на C ++, але бібліотека також постачається із .net обгорткою.

http://fdo.osgeo.org


0

У вас був погляд на nHibernate ? Він використовує просторові типи .NET (як описано вище dmbrubac), але також може спілкуватися з іншими системами БД, ніж сервер SQL.

Я не знаю, чи ви також просили рівень інтерфейсу користувача, але ось мої 2 центи: я працював з SharpMap, GeoAPI і відпочивав кілька років тому. Вони чудові, але ніколи не дійшли до стадіону, де можна сказати, що вони досить зрілі, щоб їх можна було використовувати в бізнес-програмі. Рік тому я експериментував із API Silverlight та WPF ESRI і створив два прототипи, які використовували API. Це чудово, це не безкоштовно, але він справді міцний, найсучасніший, і він робить все те, що ви хочете, щоб зробити це та інше.


Біт інтерфейсу - це самий простий біт, оскільки у нас є наш механізм візуалізації.
Rowland Shaw

0

Якщо ви пишете веб-клієнт, одним із варіантів є використання служби просторових даних ArcGIS, яка наразі є продуктом MapIt Esri (див. Http://resources.esri.com/MapIt ). Сервіс відкриває таблиці SQL Server через веб-сервіс RESTful. Веб-сервіс використовує формат JSON ArcGIS, тому таблиці з просторовими даними SQL Server можна використовувати як FeatureLayers у веб-API ArcGIS. Якщо ви хочете настільний клієнт, ви можете використовувати API WPF.

Альтернативою для розробки настільних ПК є використання типів CLR SQL Server, які входять до складу пакетів функцій SQL Server. Сторінку завантаження пакету функцій 2008 року R2 можна знайти тут - http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52 . Прокрутіть униз або знайдіть для "Типи CLR", щоб знайти посилання для завантаження.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.