- ฐานข้อมูลเชิงพื้นที่ที่กำลังดีวันดีคืน แต่ฐานข้อมูลจะดีแค่ไหนก็ตาม แต่ถ้า Application ทั้งหลายไม่สนับสนุนก็ยากที่จะอยู่ได้ หันมาดู Spatialite ตอนนี้ใน Quantum GIS สนับสนุนฐานข้อมูลนี้ในระดับที่พอใช้ได้ ก็คือสนับสนุนในระดับที่จำกัดที่ผมพบมาคือจะมองข้อมูล BLOB (Binary Large Object) ของ spatialite ซึ่งเป็นรูปถ่ายเป็น NULL แต่อย่างไรก็ตามอนาคตก็น่าจะ support ได้เต็มที่มากกว่านี้
ข้อดีของ Spatialite
- spatialite ก็คือ sqlite ที่มีส่วนขยายรองรับฐานข้อมูลแบบเชิงพื้นที่ (ความหมายที่ตรงกันก็คือ ฐานข้อมูล GIS หรือ Geographic data หรือ Geospatial data อะไรประมาณนี้) ข้อดีของ spatialite
- ติดตั้งง่ายๆ เนื่องจากมีขนาดเล็กมาก ขนาดของ sqlite + spatialite ประมาณ 2.2 MB
- ไม่ต้องมี admin ดูแล
- กินทรัพยากรของระบบต่ำมาก
- เร็วและแรง
- ใช้งานง่าย
- ผมลองใช้แล้วเห็นด้วยกับทางผู้พัฒนาที่เคลมว่าฐานข้อมูล spatialite นั้นเป็น “The world’s smallest and simplest database” ก็คือ เล็กและเรียบง่ายที่สุด
แบบจำลองเรขาคณิต(Geometry Model) ของฐานข้อมูล
- ก่อนจะไปต่อผมจะอธิบายสั้นๆ คุณลักษณะเชิงพื้นที่ของรูปลักษณทางภูมิศาตร์ ของฐานข้อมูล spatialite ออกแบบตามมาตรฐาน OGC (Open Geospatial Consortium Inc.) ซึ่งทั้งนี้แบบจำลองนี้จะตามมาตรฐาน OpenGIS ด้วย ซึ่ง geometry จะแบ่งเป็นชั้นๆได้ดังนี้
- จากไดอะแกรมด้านบนจะเป็นแบบจำลองเรขาคณิตของรูปลักษณ์ทางภูมิศาสตร์ ซึ่งสีเหลืองจะเรียกว่า Non-Instantiable ซึ่งหาคำแปลในภาษาไทยได้ยากเหลือเกิน สำหรับผมแล้วง่ายๆก็คือ สร้างไม่ได้ ส่วนสีฟ้าเรียกว่า Instantiable (สร้างได้) ซึ่งผมจะกล่าวถึงเฉพาะสีฟ้าที่สามารถ implement ได้เท่านั้น
- ซึ่งแบบจำลองจะแบ่งเป็น Class ใหญ่ๆได้ 2 ชั้นคือ Geometry และ Geometry Collection ซึ่งจะมีการแยกย่อยไปดังนี้
- Class Geometry (ชั้นของเรขาคณิต)
- class point (จุด) จะมีค่าพิกัด (x,y) ไม่มีขนาด
- class line string (ชุดของเส้นตรง)
- class polygon (รูปปิดหลายเหลี่ยม) รูปปิดนี้จะมีรูปปิดด้านในซ้อนอยู่ก็ได้เรียกว่า interior ring
- Class Geometry Collection(ชุดของชั้นเรขาคณิต)
- MultiPoint (ชุดของจุด)
- MultiLineString (ชุดของเส้นตรงหลายๆชุด)
- MultiPolygon (ชุดของรูปปิดหลายเหลี่ยม)
- Class Geometry (ชั้นของเรขาคณิต)
- เหตุที่ต้องมีแบบจำลองเหล่านี้ไว้เพื่อให้สามารถจัดเก็บรูปทรงเหล่านี้ได้ในรูปแบบไฟล์ และที่สำคัญที่สุดต้องสามารถเข้าถึง สืบค้น จัดการ ประมวลผล และแลกเปลี่ยนข้อมูลด้านสารสนเทศทางภูมิศาสตร์ได้สำหรับวัตถุเชิงพื้นที่
ดาวน์โหลดและใช้งานสำหรับผู้ใช้วินโดส์
- เนื่องจาก Sqlite + Spatialite มีขนาดเล็กจึงไม่ต้องการติดตั้งเพียงดาวน์โหลดไฟล์มาแล้ว unzip ไฟล์ไปวางไว้แล้วทำ shortcut ก็ใช้งานได้เลย ซึ่งก็เหมือนใน linux เพียงแค่ untar ไฟล์ก็เรียกใช้ได้
- ตามไปที่นี่ได้เลย http://www.gaia-gis.it/spatialite/binaries.html ซึ่งจะมีไฟล์ให้ดาวน์โหลดอยู่มาก อาจจะงงๆ ผมจะลงลิงค์ดาวน์โหลดให้(แต่อนาคตลิงค์อาจจะขาด เพราะไฟล์เปลี่ยนเวอร์ชั่น) คลิกที่ลิงค์เพื่อดาวน์โหลดได้เลย
- ไลบรารี libspatialite-win-x86-2.3.1.zip, และ proj-win-x86-4.6.1.zip และ geos-source code และ libiconv-win-x86-1.9.2.zip
- Tools ที่เป็น Command line spatialite-tools-win-x86-2.3.1.zip
- ไลบรารี Rasterlite สำหรับไฟล์ด้านรูปภาพ (Raster image) spatialite/librasterlite-win-x86-1.0.zip
- Tools ที่ใช้ในการสร้าง Database เก่งพอสมควร จะเรียกว่า administrator ก็ได้ spatialite-gui-win-x86-1.2.1.zip
- Tools ตัวนี้ทีมงานผู้พัฒนาลงทุนเขียนเป็น GIS Application ครับสำหรับเปิดข้อมูลของ spatialite tools ตัวนี้มีขนาดเล็กและเร็ว สำหรับผมแล้วเอาไว้ลองข้อมูลที่เราสร้างก่อน จะไปใช้ QGIS
ติดตั้งเพื่อใช้งาน
- เนื่องจากไม่มีโปรแกรม install สำหรับผมแล้วจะสร้างโฟลเดอร์ “spatialite” เช่น c:\spatialite จากนั้นก็ unzip ไฟล์ ที่เราดาวน์โหลดไฟล์ทั้งหมดที่ผมแนะนำมาขั้นต้นลงไปในโฟลเดอร์เดียวกันเลย และอย่าลืมตั้ง path “c:\spatialite” ให้ด้วย
สร้างฐานข้อมูลเพื่่อทดสอบ
- ที่โฟลเดอร์ผมจะใช้ 2 tools คือ spatialite-gui และ spatialite-gis สำหรับนำมาเตรียมข้อมูลและแสดงผล ผู้ใช้อาจจะสร้าง shortcut เพื่่อเรียกใช้ได้ง่ายๆ ตอนแรกผมจะเรียก spatialite-gui มาก่อนดังรูป
- คลิกที่เมนู Files > Create a New (Empty) SQLite DB ตั้งชื่อไฟล์ใหม่จะมี extension เป็น sqlite อัตโนมัติ ผมตั้งชื่อไฟล์ geology.sqlite
- ผมจะลองข้อมูลอย่างง่ายๆ โดยเปิด shape file ที่เป็น point เล็กๆ ไม่กี่จุด เพื่่อ import ไปในฐานข้อมูล spatialite ที่เมนูไฟล์คลิก Files > Advanced > Load Shapefile เปิดไฟล์ geo.shp มาที่นี่สำคัญที่สุดคือต้องป้อนค่า SRID (Spatial Reference System Identifier) ให้ถูกต้อง ค่า SRID จะเป็นหมายเลขแสดงระบบพิกัดที่เราใช้อยู่ ตัวอย่างที่ผมใช้อยู่คือค่า 32647 เป็น UTM Zone 47N บน WGS84
- จะเห็น Table “GeoPoint” ขึ้นมาคลิกขวาเลือก Edit table rows ต่อไปจะเพิ่ม column เข้าไปเพื่อจัดเก็บรูปถ่าย
- เพิ่ม column ใหม่ให้ฐานข้อมูลเพื่อเก็บรูปภาพ ที่ table “GeoPoint” คลิกขวาเลือก Add New Column
- ต่อไปจะเริ่ม import รูปถ่ายตามชื่อไฟล์ของรูป
- ต่อไปผมเพิ่ม table ที่เป็นเส้นชั้นความสูงด้วยวิธีการที่กล่าวมาแล้วคือคลิกที่เมนู Files > Advanced > Load Shapefile เลือกไฟล์ Contours.shp
- ตอนนี้ก็พอแค่นี้ก่อนครับ ติดตามตอนหน้า จะนำฐานข้อมูล spatialite มาเปิดดูด้วย spatialite-gis และไปลองฐานข้อมูลด้วย QGIS ว่าจะ support ได้สักขนาดไหนกันครับ
สวัสดีครับ ขอสอบถามครับ พอดีไปอ่านใน คู่มือ Spatiallite ได้เปรียบเทียบกับฐานข้อมูลตัวอื่นๆ แล้วยก Binary size มาเปรียบเทียบ อยากทราบว่า Binary size นี้มันคืออะไรครับ
ในนี้ครับ https://www.gaia-gis.it/spatialite-2.1/SpatiaLite-manual.html
ขอบคุณครับ
สวัสดีครับ คงหมายถึงขนาด execute file หรือ dynamic link library (dll) ที่ขนาดของ libsqlite3.dll ขนาด 199 KB และ libspatialite-2.dll ขนาดเพียง 93 KB ซึ่งขนาดเล็กมาก เวลา execute แล้วคงกินเมโมรี่นิดเดียวครับ