Как я могу использовать пространственные типы SQL Server из приложения .Net?

14

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

Кажется очевидным, что мы могли бы использовать типы SQL Spatial, однако, похоже, нет никакого способа (скажем) прочитать их из результата запроса SQL или сохранить обновленный POI / многоугольник.

Действительно ли разработчики должны сами обрабатывать преобразование на уровне хранимых процедур или есть способ использовать типы изначально?

Роуланд Шоу
источник
это лучше спросить в StackOverflow, когда вы спрашиваете о программировании.
Ян
2
@Ian Область действия этого сайта первоначально была определена как «Сайт вопросов и ответов для программистов , администраторов баз данных , картографов, географов и всех, кто интересуется ГИС на профессиональном уровне» (выделено мной)
Роуланд Шоу,

Ответы:

16

Это настольное приложение или, скажем, приложение Silverlight? Если это веб-интерфейс, вы должны перепрыгнуть через несколько обручей. Вы можете создать представление, представляющее WKT, а затем проанализировать клиентскую сторону WKT в геометриях WPF / Silverlight.

Если это приложение для настольного компьютера, вам будет проще. В Project Code есть хороший пример средства просмотра SQL Geometry, которое поможет как для настольных компьютеров, так и для веб-сайтов.

Вам нужно обратиться к Microsoft.SqlServer.Types.dll, найденному в SQL Server Install / 100 / SDK / Assemblies, чтобы напрямую использовать SQLGeometry или SQLGeography.

Такие технологии, как RIA, не понимают эти типы, но есть обходной путь. По сути, вы создаете представление, которое преобразует геометрию как varbinary (max), используете его в вашем OR mapper, RIA, LINQ и т. Д., А затем преобразуете его обратно на клиенте. Существует хороший учебник здесь

Очень позднее редактирование: Silverlight также не примет их, потому что ранее упомянутые DLL не скомпилированы с Silverlight. Получение версий, совместимых с Silverlight, занимает много места в списке желаний многих людей!

dmbrubac
источник
2

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

После этого вы можете использовать свободный nhibernate, снова из nuget или по этой ссылке: (Не удалось вставить ссылку здесь, потому что, похоже, у меня нет 10 повторений ...)

После этого вам потребуется пользовательский тип пользователя, чтобы сопоставить тип 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

jumpinjackie
источник
0

Вы смотрели на nHibernate ? Он использует пространственные типы .NET (как описано выше в dmbrubac), но также может взаимодействовать с другими системами БД, отличными от SQL-сервера.

Я не знаю, спрашивали ли вы также об уровне пользовательского интерфейса, но вот мои 2 цента: я работал с SharpMap, GeoAPI и отдыхал несколько лет назад. Они великолепны, но никогда не доходили до стадиона, где можно сказать, что они достаточно взрослые, чтобы их можно было использовать в бизнес-приложениях. Год назад я экспериментировал с Silverlight и WPF API от ESRI и создал два прототипа, которые использовали API. Это здорово, это не бесплатно, но это действительно солидно, современно, и делает все, что вы хотите, и даже больше.

Kitto
источник
Интерфейс немного проще, так как у нас есть наш механизм визуализации.
Роуланд Шоу
0

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

Альтернативой для разработки десктопов является использование типов CLR SQL Server, включенных в пакеты дополнительных компонентов SQL Server. Вы можете найти страницу загрузки для пакета возможностей 2008 R2 здесь - http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52 . Прокрутите вниз или найдите «CLR Types», чтобы найти ссылку для скачивания.

zwaap
источник