ทราบข่าวมาสักพักแล้ว เกี่ยวกับการที่ Microsoft SQL Server 2008 มีการเพิ่มฟีเจอร์การจัดการข้อมูลเชิงพื้นที่( Spatial Data) เข้าไป แต่วันนี้ผมเพิ่งจะได้อ่าน review จากคุณ JasonFollas ที่ได้เขียนอธิบายฟีเจอร์การทำงานของ Spatial Data Module ใน Microsoft SQL Server 2008 เลยอยากนำมาแนะนำให้อ่านกัน โดยคุณ JasonFollas ได้เขียนบทความทั้งหมดเป็น 4 ตอนครับค่อนข้างละเอียด ท่านที่ยังไม่เคยใช้ Spatial Database มาก่อนก็สามารถได้ เนื่องจากบทความเป็นภาษาอังกฤษค่อนข้างยาว ประกอบกับช่วงนี้ผมงานยุ่งขี้เกียจแปล เลยขอสรุปใจความมาเล่าสู่กันฟังแทนการเขียนเนื้อหาทั้งหมด แต่สำหรับท่านที่ต้องใช้ Microsoft SQL Server 2008 ในการเก็บข้อมูล Spatial Data แนะนำให้อ่านโดยละเอียดครับ เพราะมีประโยชน์มากสำหรับท่านที่ต้องการเริ่มต้นใช้งาน

       หัวข้อแรก SQL Server 2008: Spatial Data, Part 1  เขียนเกี่ยวกับเรื่องทั่วไป ไฮไลต์อยู่ที่ Spatial Data Type โดย Microsoft SQL Server 2008 แบ่งชนิดของข้อมูลเชิงพื้นที่เป็นสองกลุ่มคือ Geometry (flat Earth model) และ Geography (ellipsoidal model) ขยายความก็คือพวก Geometry ได้แก่ข้อมูลเรขาคณิตทั่วไปประเภท 2มิติใน Spatial Domain เช่นการจัดการข้อมูลเชิงตำแหน่งในอาคารหรือใน Space ทั่วไปส่วน Geography คือข้อมูลที่อ้างอิงกับโลกขึ้นกับ Map Projection ต่างๆ ตบท้ายในพาร์ทนี้ก็พูดถึง Spatial Reference System ในพาร์ทนี้ท่านที่ไม่มีพื้นฐานทาง Mapping หรือภูมิศาสตร์ ควรต้องหาความรู้เพิ่มเติม(เพราะในเอกสารอธิบายแบบคราวๆ) เพื่อจะได้เข้าใจวิธีการจัดการข้อมูลเชิงพื้นที่

        หัวข้อที่สองเริ่มเข้มข้น เพราะกล่าวถึง Standard เนื่องจาก Microsoft ก็เป็นสมาชิกใน OGC ดังนั้น Microsoft SQL Server 2008 ก็จะมีการ Implement ในส่วนของ Simple Feature Protocol ของ OGC (กลุ่มพวก interface ST_ ทั้งหลาย) เช่นเดียวกับ Oracle และ Postgresql เรื่องของ Simple Feature ก็ว่ากันยาวแต่มีประโยชน์ครับ ลองเข้าไปอ่านรายละเอียดได้

OpenGIS Implementation Specification for Geographic information – Simple feature access – Part 1: Common architecture

OpenGIS Implementation Specification for Geographic information – Simple feature access – Part 2: SQL option

นอกจากนี้ยังพูดถึงเรื่องของ Specific Types of Spatial Data ทั้งสี่ชนิดคือ POINT, LINESTRING, Polygon และ COLLECTIONS โดยมีการกล่าวถึงวิธีการจัดเก็บข้อมูลเรขาคณิตในฐานข้อมูล ที่ผมติดใจและอยากทดสอบคือเรื่องของการสามารถจัดเก็บข้อมูลเรขาคณิตหลายๆชนิด (Point, Line, Polygon) ลงในคอลัมภ์เดียวกันได้ ท้ายสุดก็แสดงการเข้ารหัสข้อมูลแบบ WKT (Well Know Text) ให้ดู ซึ่งใน Microsoft SQL Server 2008 สามารถรองรับฟอร์แมท์ต่างๆได้แก่ Well-Known Text (WKT), Well-Known Binary (WKB), and Geography Markup Language (GML)

POLYGON((0 0, 0 10, 10 10, 10 0, 0 0), (1 1, 4 5, 4 1, 1 1)) ตัวอย่าง Polygon ในรูปแบบ WKT

      

         หัวข้อที่สาม ค่อนข้างจะไปทางโปรแกรมแกรมมิ่ง กล่าวถึงการทำงานกับ User Defined Types (UDT) โดยใช้ภาษา C# และ VB.NET คล้ายๆกับ PL/SQL ใน Postgresql แต่ดูแล้วน่าจะเขียนง่ายกว่า เพราะว่ามี Debug ที่คอยช่วยหาที่ผิดพลาด โค้ดข้างล่างแสดงตัวอย่างการประกาศตัวแปรและเรียกใช้งานฟังก์ชั่นเพื่อประมวลผลข้อมูล

DECLARE @g Geometry

SET @g = Geometry::STLineFromText(‘LINESTRING(0 0, 10 10, 21 2)’,0)

PRINT @g.STLength() — Result: 27.7436

           หัวข้อที่สี่ (สุดท้าย) กล่าวถึงฟังก์ชั่นต่างๆที่เกี่ยวกับการประมวลผลและการวิเคราะห์ข้อมูลเชิงพื้นที่ใน Microsoft SQL Server 2008 ได้แก่ STEnvelope, STExteriorRing, STInteriorRingN, STBuffer เป็นต้น ตอกย้ำแนวคิดที่ว่า Spatial database ไม่ใช่แค่ storage เพียงอย่างเดียว

           เข้าไปอ่านบทความฉบับเต็มของคุณ JasonFollas ได้ที่ http://mandown.co.nz/microsoft/microsoft-sql-server-2008-spatial-data/