Bagaimana saya bisa menggunakan tipe spasial SQL Server dari aplikasi .Net?

14

Untuk proyek yang akan datang, salah satu persyaratan adalah untuk menyimpan dan menggunakan data geogrpahic dasar sebagai bagian dari aplikasi SQL-Server / .Net yang ada.

Tampak jelas bahwa kita dapat menggunakan tipe SQL Spatial, namun, sepertinya tidak ada cara untuk (katakan) membacanya dari hasil query SQL, atau untuk menyimpan POI / poligon yang diperbarui.

Apakah pengembang benar-benar harus menangani konversi sendiri di tingkat prosedur tersimpan, atau adakah cara menggunakan jenis secara asli?

Rowland Shaw
sumber
ini mungkin lebih baik ditanyakan pada StackOverflow karena Anda bertanya tentang pemrograman.
Ian
2
@Ian Cakupan untuk situs ini pada awalnya didefinisikan sebagai "situs T&J untuk programmer , DBA , Kartografer, Geografi, dan siapa pun yang tertarik dengan GIS secara profesional" (penekanan tambang)
Rowland Shaw

Jawaban:

16

Apakah ini aplikasi desktop atau, katakanlah aplikasi Silverlight? Jika berbasis web Anda harus melewati beberapa rintangan. Anda bisa membuat tampilan yang mengekspos WKT dan kemudian menguraikan sisi klien WKT ke dalam geometri WPF / Silverlight.

Jika itu adalah aplikasi desktop, Anda sudah mendapatkannya dengan sedikit lebih mudah. Ada contoh yang baik di Proyek Kode dari penampil SQL Geometry yang akan membantu untuk desktop atau web.

Anda perlu merujuk Microsoft.SqlServer.Types.dll, ditemukan di SQL Server Install / 100 / SDK / Assemblies untuk menggunakan SQLGeometry atau SQLGeography secara langsung.

Teknologi seperti RIA tidak memahami jenis ini tetapi ada solusi. Pada dasarnya Anda membuat tampilan yang melemparkan geometri sebagai varbinary (maks), menggunakannya dalam ATAU mapper Anda, RIA, LINQ, dll. Dan kemudian mengubahnya kembali pada klien. Ada tutorial yang bagus di sini

Sunting sangat terlambat: Silverlight tidak akan menerimanya juga karena DLL yang disebutkan sebelumnya tidak dikompilasi dengan Silverlight. Mendapatkan versi yang kompatibel Silverlight tinggi pada daftar keinginan banyak orang!

dmbrubac
sumber
2

Anda dapat menggunakan tipe data server sql, Anda bisa mendapatkannya dari nuget atau di sini: http://www.microsoft.com/en-us/download/details.aspx?id=16177 (dekat akhir halaman)

Setelah itu, Anda dapat menggunakan fasih nhibernate, lagi dari nuget atau tautan ini: (Tidak dapat menyisipkan tautan di sini karena sepertinya saya tidak memiliki 10 repetisi ...)

Setelah itu, Anda akan memerlukan UserType khusus untuk memetakan tipe sql ke tipe clr di nhibernate. Beruntung bagi Anda, orang ini membuat satu: http://blogs.ugidotnet.org/mik/archive/2010/03/26/map-sql-server-2008-geography-type-with-fluent-nhibernate.aspx

Semoga ini membantu !

Alex Rouillard
sumber
1

Pustaka Fitur Data Objects (FDO) memungkinkan Anda untuk mengakses berbagai format data geospasial (termasuk SQL Server) melalui satu set antarmuka tunggal.

Pustaka ada dalam C ++, tetapi pustaka juga dilengkapi dengan .net wrapper.

http://fdo.osgeo.org

jumpinjackie
sumber
0

Apakah Anda sudah melihat nHibernate ? Menggunakan tipe .NET spasial (seperti yang dijelaskan oleh dmbrubac di atas) tetapi juga dapat berbicara dengan sistem DB selain SQL server.

Saya tidak tahu apakah Anda sudah meminta level UI juga, tapi ini 2 sen saya: Saya sudah bekerja dengan SharpMap, GeoAPI dan beristirahat beberapa tahun yang lalu. Mereka hebat tetapi tidak pernah mencapai stadion di mana Anda dapat mengatakan bahwa mereka cukup dewasa untuk digunakan dalam aplikasi bisnis. Saya bereksperimen dengan ESRI's Silverlight dan WPF API setahun yang lalu dan membuat dua prototipe yang menggunakan API. Ini hebat, tidak gratis tetapi benar-benar solid, canggih dan melakukan semua hal yang Anda ingin lakukan dan banyak lagi.

Kitto
sumber
Bit UI adalah bit yang mudah, karena kami memiliki mesin visualisasi kami.
Rowland Shaw
0

Jika Anda menulis klien web, salah satu opsi adalah menggunakan Layanan Data Spasial ArcGIS, yang saat ini dikemas dengan produk MapIt Esri (lihat http://resources.esri.com/MapIt ). Layanan memperlihatkan tabel SQL Server melalui layanan web RESTful. Layanan web menggunakan format ArcGIS JSON, sehingga tabel dengan data spasial SQL Server dapat dikonsumsi sebagai FeatureLayers di ArcGIS Web API. Jika Anda menginginkan klien desktop, Anda dapat menggunakan WPF API.

Alternatif untuk pengembangan desktop adalah dengan menggunakan SQL Server CLR Type yang disertakan dengan paket fitur SQL Server. Anda dapat menemukan halaman unduhan untuk paket fitur R2 2008 di sini - http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52 . Gulir ke bawah atau lakukan pencarian untuk "Jenis CLR" untuk menemukan tautan unduhan.

zwaap
sumber