Bir .Net uygulamasından SQL Server'ın uzamsal türlerini nasıl kullanabilirim?


14

Yaklaşan bir proje için, gereksinimlerden biri temel geogrpahic verilerini mevcut bir SQL-Server / .Net uygulamasının bir parçası olarak saklamak ve kullanmaktır.

SQL Uzamsal türlerini kullanabileceğimiz açıktır, ancak bunları bir SQL sorgusu sonucundan okumak (veya söylemek) veya güncellenmiş bir POI / çokgeni kaydetmek için herhangi bir yol görünmemektedir.

Geliştiricilerin dönüştürmeyi gerçekten de Saklı yordam düzeyinde ele alması gerekiyor mu yoksa türleri yerel olarak kullanmanın bir yolu var mı?


programlama hakkında sorduğunuzda bu, StackOverflow'da daha iyi sorulabilir.
Ian

2
@Ian Bu sitenin kapsamı başlangıçta " programcılar , DBA'lar , Haritacılar, Coğrafyacılar ve CBS ile profesyonel olarak ilgilenen herkes için Soru-Cevap sitesi" olarak tanımlanmıştır (Vurgu mayın)
Rowland Shaw

Yanıtlar:


16

Bu bir masaüstü uygulaması mı yoksa Silverlight uygulaması mı? Web tabanlıysa, bazı çemberlerden atlamak zorundasınız. WKT'yi açığa çıkaran bir görünüm oluşturabilir ve ardından WKT istemci tarafını WPF / Silverlight geometrilerine ayrıştırabilirsiniz.

Bir masaüstü uygulamasıysa biraz daha kolay. SQL Geometri görüntüleyicinin Code Project'te hem masaüstü hem de web için yardımcı olacak iyi bir örnek var .

SQLGeometry veya SQLGeography'yi doğrudan kullanmak için SQL Server Install / 100 / SDK / Assemblies'da bulunan Microsoft.SqlServer.Types.dll dosyasına başvurmanız gerekir.

DEA gibi teknolojiler bu türleri anlamıyor, ancak bir çözüm var. Esasen geometriyi varbinary (maks) olarak veren bir görünüm oluşturur, OR eşleştiricinizde, RIA, LINQ vb. Burada iyi bir öğretici var

Çok geç düzenleme: Silverlight, daha önce belirtilen DLL'lerin Silverlight'a karşı derlenmediği için onları kabul etmez. Silverlight uyumlu sürümleri almak birçok kişi istek listesinde yüksektir!



2

Sql sunucusu veri türlerini kullanabilirsiniz, bunları nuget'ten veya buradan alabilirsiniz: http://www.microsoft.com/en-us/download/details.aspx?id=16177 (sayfanın sonuna yakın)

Bundan sonra, tekrar nuget veya bu bağlantıdan akıcı nhibernate kullanabilirsiniz: (Buraya bağlantı eklenemedi çünkü 10 tekrarım yok gibi görünüyor ...)

Bundan sonra, sql türünü nhibernate'deki clr türüyle eşlemek için özel bir UserType'a ihtiyacınız olacaktır. Şanslısın, bu adam bir tane yaptı: http://blogs.ugidotnet.org/mik/archive/2010/03/26/map-sql-server-2008-geography-type-with-fluent-nhibernate.aspx

Bu yardımcı olur umarım !




1

Özellik Veri Nesneleri (FDO) kitaplığı, tek bir birleştirilmiş arabirimler kümesi aracılığıyla çeşitli coğrafi veri biçimlerine (SQL Server dahil) erişmenizi sağlar.

Kitaplık C ++ 'dadır, ancak kitaplık da .net sarıcısıyla birlikte gelir.

http://fdo.osgeo.org


0

NHibernate'e bir göz attınız mı? Uzamsal .NET türlerini kullanır (yukarıda dmbrubac tarafından açıklandığı gibi), ancak SQL sunucusu dışındaki diğer DB sistemleriyle de konuşabilir.

UI seviyesini de isteyip istemediğinizi bilmiyorum, ama işte 2 sentim: SharpMap, GeoAPI ile çalıştım ve birkaç yıl önce dinlendim. Harika ama asla bir iş uygulamasında kullanılacak kadar olgun olduklarını söyleyebileceğiniz bir stadyuma ulaşmadılar. Bir yıl önce ESRI'nin Silverlight ve WPF API'sini denedim ve API'yı kullanan iki prototip oluşturdum. Harika, ücretsiz değil ama gerçekten sağlam, son teknoloji ve yapmasını istediğiniz her şeyi ve daha fazlasını yapıyor.


Görselleştirme motorumuz olduğu için UI biti kolay bit.
Rowland Shaw

0

Bir web istemcisi yazıyorsanız, bir seçenek şu anda ESRI'nın MapIT ürünün ambalajında bulunan ArcGIS Mekansal Veri Servisi, kullanmaktır (bakınız http://resources.esri.com/MapIt ). Hizmet, SQL Server tablolarını bir RESTful web hizmeti aracılığıyla sunar. Web hizmeti ArcGIS JSON formatını kullanır, bu nedenle SQL Server uzamsal verileri olan tablolar ArcGIS Web API'lerinde FeatureLayers olarak kullanılabilir. Bir masaüstü istemcisi istiyorsanız, WPF API'sını kullanabilirsiniz.

Masaüstü geliştirmenin alternatifi, SQL Server özellik paketlerinde bulunan SQL Server CLR Türlerini kullanmaktır. 2008 R2 özellik paketi için indirme sayfasını burada bulabilirsiniz - http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52 . İndirme bağlantısını bulmak için aşağı kaydırın veya "CLR Türleri" için bir arama yapın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.