ฉันจะใช้ประเภทเชิงพื้นที่ของ SQL Server จากแอปพลิเคชัน. Net ได้อย่างไร


14

สำหรับโครงการที่กำลังจะมาถึงข้อกำหนดหนึ่งคือการจัดเก็บและใช้ข้อมูล geogrpahic พื้นฐานเป็นส่วนหนึ่งของแอปพลิเคชัน SQL-Server / .Net ที่มีอยู่

ดูเหมือนว่าเราสามารถใช้ชนิด SQL Spatial ได้อย่างไรก็ตามดูเหมือนว่าจะไม่มีวิธีใดในการอ่านจากผลลัพธ์ของแบบสอบถาม SQL หรือบันทึก POI / polygon ที่อัปเดต

นักพัฒนาจำเป็นต้องจัดการกับการแปลงในระดับขั้นตอนการจัดเก็บจริง ๆ หรือมีวิธีการใช้ชนิดดั้งเดิมหรือไม่?


นี่อาจจะถูกถามที่ดีกว่าใน StackOverflow ตามที่คุณถามเกี่ยวกับการเขียนโปรแกรม
เอียน

2
@Ian ขอบเขตสำหรับไซต์นี้ถูกกำหนดเดิมเป็น "Q & A เว็บไซต์สำหรับโปรแกรมเมอร์ , DBAs , cartographers, Geographers และทุกคนที่สนใจในระบบสารสนเทศภูมิศาสตร์อย่างมืออาชีพ" (ผมขอย้ำ)
โรว์ลันด์ชอว์

คำตอบ:


16

นี่เป็นแอปพลิเคชันเดสก์ท็อปหรือว่าแอปพลิเคชัน Silverlight หรือไม่ ถ้าเป็นเว็บคุณจะต้องผ่านห่วงบางอย่าง คุณสามารถสร้างมุมมองที่เปิดเผย WKT แล้วแยกวิเคราะห์ฝั่งไคลเอ็นต์ WKT ลงในรูปทรง WPF / Silverlight

หากเป็นแอปพลิเคชันเดสก์ท็อปคุณจะได้รับมันค่อนข้างง่ายขึ้น มีตัวอย่างที่ดีที่Code Projectของวิวเวอร์ SQL Geometry ที่จะช่วยทั้งบนเดสก์ท็อปหรือเว็บ

คุณต้องอ้างอิง Microsoft.SqlServer.Types.dll ซึ่งพบได้ในSQL Server Install / 100 / SDK / Assemblies เพื่อใช้ SQLGeometry หรือ SQLGeography โดยตรง

เทคโนโลยีอย่าง RIA ไม่เข้าใจประเภทเหล่านี้ แต่มีวิธีแก้ไขอยู่บ้าง โดยพื้นฐานแล้วคุณสร้างมุมมองที่ใช้เรขาคณิตเป็น varbinary (สูงสุด) ใช้ใน OR mapper, RIA, LINQ และอื่น ๆ จากนั้นแปลงกลับบนไคลเอนต์ มีการสอนที่ดีที่นี่

การแก้ไขล่าช้ามาก: Silverlight จะไม่ยอมรับทั้งคู่เนื่องจาก DLL ที่กล่าวถึงก่อนหน้านี้ไม่ได้ถูกคอมไพล์กับ Silverlight การได้รับ Silverlight เวอร์ชั่นที่ใช้งานร่วมกันได้นั้นมีอยู่มากมายในรายการที่คนต้องการ!



2

คุณสามารถใช้ชนิดข้อมูลเซิร์ฟเวอร์ sql ได้จาก nuget หรือที่นี่: http://www.microsoft.com/en-us/download/details.aspx?id=16177 (ใกล้ถึงจุดสิ้นสุดของหน้า)

หลังจากนั้นคุณสามารถใช้ nhibernate ได้อย่างคล่องแคล่วอีกครั้งจาก nuget หรือลิงก์นี้: (ไม่สามารถแทรกลิงค์ที่นี่เพราะดูเหมือนว่าฉันไม่มี 10 reps ... )

หลังจากนั้นคุณจะต้องมี 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

ไลบรารี่ Feature Data Objects (FDO) ช่วยให้คุณสามารถเข้าถึงรูปแบบข้อมูลเชิงพื้นที่ต่างๆ (รวมถึง SQL Server) ผ่านชุดอินเทอร์เฟซที่รวมเป็นหนึ่งเดียว

ไลบรารีอยู่ใน C ++ แต่ไลบรารียังมาพร้อมกับ. wrapper สุทธิ

http://fdo.osgeo.org


0

คุณดูที่ไฮเบอร์เนตหรือไม่? มันใช้ประเภท. spatial .NET (ตามที่อธิบายโดย dmbrubac ด้านบน) แต่ยังสามารถพูดคุยกับระบบฐานข้อมูลอื่น ๆ กว่าเซิร์ฟเวอร์ SQL

ฉันไม่รู้ว่าคุณขอระดับ UI ด้วยหรือไม่ แต่นี่คือ 2 เซ็นต์ของฉัน: ฉันทำงานกับ SharpMap, GeoAPI และพักไม่กี่ปีที่ผ่านมา พวกเขายอดเยี่ยม แต่ไม่เคยไปถึงสนามกีฬาที่คุณสามารถพูดได้ว่าพวกเขาเป็นผู้ใหญ่พอที่จะใช้ในการสมัครทางธุรกิจ ฉันทดลองกับ Silverlight และ WPF API ของ ESRI เมื่อปีที่แล้วและสร้างต้นแบบสองตัวที่ใช้ API มันยอดเยี่ยมมันไม่ฟรี แต่มันแข็งแกร่งแข็งล้ำสมัยและทำทุกสิ่งที่คุณต้องการให้ทำและอีกมาก


บิต UI เป็นบิตที่ง่ายเนื่องจากเราเป็นเครื่องมือสร้างภาพของเรา
Rowland Shaw

0

หากคุณกำลังเขียนเว็บไคลเอ็นต์ตัวเลือกหนึ่งคือการใช้ ArcGIS Spatial Data Service ซึ่งปัจจุบันบรรจุด้วยผลิตภัณฑ์ MapIt ของ Esri (ดูที่http://resources.esri.com/MapItของ Esri ) บริการเปิดเผยตาราง SQL Server ผ่านบริการเว็บสงบ บริการเว็บใช้รูปแบบ ArcGIS JSON ดังนั้นตารางที่มีข้อมูลเชิงพื้นที่ของ SQL Server สามารถใช้เป็น FeatureLayers ใน ArcGIS Web APIs หากคุณต้องการเดสก์ท็อปไคลเอ็นต์คุณสามารถใช้ WPF API

อีกทางเลือกหนึ่งสำหรับการพัฒนาเดสก์ท็อปคือการใช้ SQL Server CLR Types ที่รวมอยู่ในชุดคุณลักษณะ SQL Server คุณสามารถค้นหาหน้าดาวน์โหลดสำหรับ R2 ชุดคุณลักษณะ 2008 นี่ - http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52 เลื่อนลงหรือค้นหา "ประเภท CLR" เพื่อค้นหาลิงค์ดาวน์โหลด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.