Para um próximo projeto, um dos requisitos é armazenar e usar dados geográficos básicos como parte de um aplicativo SQL-Server / .Net existente.
Parece óbvio que poderíamos usar os tipos espaciais do SQL, no entanto, parece não haver nenhuma maneira de (digamos) lê-los a partir do resultado de uma consulta SQL ou salvar um POI / polígono atualizado.
Os desenvolvedores realmente precisam lidar com a conversão no nível do procedimento Stored, ou existe uma maneira de usar os tipos nativamente?
.net
sql-server
Rowland Shaw
fonte
fonte
Respostas:
É um aplicativo de desktop ou, digamos, um aplicativo Silverlight? Se for baseado na Web, você precisará passar por alguns obstáculos. Você pode criar uma exibição que expõe o WKT e, em seguida, analisar o lado do cliente WKT nas geometrias WPF / Silverlight.
Se é um aplicativo de desktop, você fica um pouco mais fácil. Há um bom exemplo no Code Project de um visualizador de SQL Geometry que ajudará tanto na área de trabalho quanto na web.
Você precisa fazer referência ao Microsoft.SqlServer.Types.dll, encontrado em SQL Server Install / 100 / SDK / Assemblies para usar SQLGeometry ou SQLGeography diretamente.
Tecnologias como a RIA não entendem esses tipos, mas há uma solução alternativa. Essencialmente, você cria uma exibição que projeta a geometria como um varbinário (máximo), usa-a no seu mapeador OR, RIA, LINQ etc. e depois a converte novamente no cliente. Há um bom tutorial aqui
Edição muito tardia: o Silverlight também não os aceita porque as DLLs mencionadas anteriormente não são compiladas no Silverlight. Obter versões compatíveis com o Silverlight está no topo da lista de desejos de muitas pessoas!
fonte
Você pode usar a API ESRI do Silverlight para visualizar dados espaciais armazenados no SQL Server 2008:
http://resources.esri.com/arcgisserver/apis/silverlight/index.cfm?fa=codeGalleryDetails&scriptID=16494
fonte
Você pode usar tipos de dados do servidor sql, obtê-los no nuget ou aqui: http://www.microsoft.com/en-us/download/details.aspx?id=16177 (próximo ao final da página)
Depois disso, você pode usar o nhibernate fluente, novamente a partir do nuget ou deste link: (Não foi possível inserir o link aqui porque parece que não tenho 10 repetições ...)
Depois disso, você precisará de um UserType personalizado para mapear o tipo sql para o tipo clr no nhibernate. Para sua sorte, esse cara fez um: http://blogs.ugidotnet.org/mik/archive/2010/03/26/map-sql-server-2008-geography-type-with-fluent-nhibernate.aspx
Espero que isto ajude !
fonte
dê uma olhada no sharpmap: http://sharpmap.codeplex.com/
fonte
O SharpMap é a melhor solução. Eu olhei para todos os outros, e é de longe o mais robusto. Verifique se você está usando a versão beta 2.0. Eu fiz um post sobre o assunto (link para download incluído). Sinta-se livre para conferir.
http://www.jasonkiesel.com/index.php/119/my-go-to-collection-of-net-gis-libraries/
fonte
A biblioteca Feature Data Objects (FDO) permite acessar vários formatos de dados geoespaciais (incluindo o SQL Server) por meio de um único conjunto unificado de interfaces.
A biblioteca está em C ++, mas a biblioteca também vem com um wrapper .net.
http://fdo.osgeo.org
fonte
Você deu uma olhada no nHibernate ? Ele usa os tipos espaciais do .NET (conforme descrito por dmbrubac acima), mas também pode conversar com outros sistemas de banco de dados que não o SQL Server.
Não sei se você pediu o nível da interface do usuário também, mas aqui estão os meus 2 centavos: trabalhei com SharpMap, GeoAPI e descansei alguns anos atrás. Eles são ótimos, mas nunca chegaram a um estádio em que você pode dizer que eles são maduros o suficiente para serem usados em um aplicativo de negócios. Eu experimentei as APIs Silverlight e WPF da ESRI há um ano e criei dois protótipos que usavam a API. É ótimo, não é gratuito, mas é realmente sólido, moderno e faz todas as coisas que você deseja que faça e muito mais.
fonte
Se você estiver escrevendo um cliente da Web, uma opção é usar o ArcGIS Spatial Data Service, que atualmente é fornecido com o produto MapIt da Esri (consulte http://resources.esri.com/MapIt ). O serviço expõe tabelas do SQL Server por meio de um serviço da Web RESTful. O serviço da Web usa o formato ArcGIS JSON, para que as tabelas com dados espaciais do SQL Server possam ser consumidas como FeatureLayers nas APIs da Web do ArcGIS. Se você deseja um cliente de desktop, pode usar a API WPF.
Uma alternativa para o desenvolvimento da área de trabalho é usar os Tipos de CLR do SQL Server incluídos nos feature packs do SQL Server. Você pode encontrar a página de download do feature pack 2008 R2 aqui - http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52 . Role para baixo ou procure "Tipos de CLR" para encontrar o link de download.
fonte