Skip to content

Prajuab Riabroy's Blog

Survey Application – GNSS – UAV – Programing – Python – Dart&Flutter – Rust

Menu
  • Home
  • About Us
  • Survey Application
    • Surveyor Pocket Tools
    • Traverse Pro
    • XSection Plot
    • Geoid Height Pro
    • Spot Fire
    • โปรแกรมงานสำรวจสำหรับเครื่องคิดเลข Casio fx-5800P
    • โปรแกรมงานสำรวจสำหรับเครื่องคิดเลข Casio fx-9860G II SD
  • Download
  • Privacy Policy
Menu

มาลองใช้ฐานข้อมูลเชิงพื้นที่ Spatialite ที่ทั้งเล็ก เร็ว และแรง ตอนที่ 1

Posted on 21/09/2010
  • ฐานข้อมูลเชิงพื้นที่ที่กำลังดีวันดีคืน แต่ฐานข้อมูลจะดีแค่ไหนก็ตาม แต่ถ้า Application ทั้งหลายไม่สนับสนุนก็ยากที่จะอยู่ได้ หันมาดู Spatialite ตอนนี้ใน Quantum GIS สนับสนุนฐานข้อมูลนี้ในระดับที่พอใช้ได้ ก็คือสนับสนุนในระดับที่จำกัดที่ผมพบมาคือจะมองข้อมูล BLOB (Binary Large Object) ของ spatialite ซึ่งเป็นรูปถ่ายเป็น NULL แต่อย่างไรก็ตามอนาคตก็น่าจะ support ได้เต็มที่มากกว่านี้
ตัวอย่างการใช้ฐานข้อมูล spatialite

ข้อดีของ 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
      Point
      ตัวอย่าง Linestring
      ตัวอย่าง Polygon
    • Class Geometry Collection(ชุดของชั้นเรขาคณิต)
      • MultiPoint (ชุดของจุด)
      • MultiLineString (ชุดของเส้นตรงหลายๆชุด)
      • MultiPolygon (ชุดของรูปปิดหลายเหลี่ยม)
    MultiPoint
    MultiLinestrings

    MultiPolygons
  • เหตุที่ต้องมีแบบจำลองเหล่านี้ไว้เพื่อให้สามารถจัดเก็บรูปทรงเหล่านี้ได้ในรูปแบบไฟล์ และที่สำคัญที่สุดต้องสามารถเข้าถึง สืบค้น จัดการ ประมวลผล และแลกเปลี่ยนข้อมูลด้านสารสนเทศทางภูมิศาสตร์ได้สำหรับวัตถุเชิงพื้นที่

ดาวน์โหลดและใช้งานสำหรับผู้ใช้วินโดส์

  • เนื่องจาก 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” ให้ด้วย
โฟลเดอร์สำหรับ Spatialite

สร้างฐานข้อมูลเพื่่อทดสอบ

  • ที่โฟลเดอร์ผมจะใช้ 2 tools คือ spatialite-gui และ spatialite-gis สำหรับนำมาเตรียมข้อมูลและแสดงผล ผู้ใช้อาจจะสร้าง shortcut เพื่่อเรียกใช้ได้ง่ายๆ  ตอนแรกผมจะเรียก spatialite-gui มาก่อนดังรูป
spatialite-gui เมื่อเปิดครั้งแรก
  • คลิกที่เมนู Files > Create a New (Empty) SQLite DB ตั้งชื่อไฟล์ใหม่จะมี extension เป็น sqlite อัตโนมัติ ผมตั้งชื่อไฟล์ geology.sqlite
สร้างฐานข้อมูล spatialite ใหม่
  • ผมจะลองข้อมูลอย่างง่ายๆ โดยเปิด shape file ที่เป็น point เล็กๆ ไม่กี่จุด เพื่่อ import ไปในฐานข้อมูล spatialite ที่เมนูไฟล์คลิก Files > Advanced > Load Shapefile เปิดไฟล์ geo.shp มาที่นี่สำคัญที่สุดคือต้องป้อนค่า SRID (Spatial Reference System Identifier) ให้ถูกต้อง ค่า SRID จะเป็นหมายเลขแสดงระบบพิกัดที่เราใช้อยู่ ตัวอย่างที่ผมใช้อยู่คือค่า 32647 เป็น UTM Zone 47N บน WGS84
ตั้งค่าต่างๆให้กับ shape file ที่ import เข้า spatialite
  • จะเห็น Table “GeoPoint” ขึ้นมาคลิกขวาเลือก Edit table rows ต่อไปจะเพิ่ม column เข้าไปเพื่อจัดเก็บรูปถ่าย
แสดง Table ที่จะทำการเพิ่ม column
  • เพิ่ม column ใหม่ให้ฐานข้อมูลเพื่อเก็บรูปภาพ ที่ table “GeoPoint” คลิกขวาเลือก Add New Column

 

 

  • ต่อไปจะเริ่ม import รูปถ่ายตามชื่อไฟล์ของรูป
Import Blob to new column
  • ต่อไปผมเพิ่ม table ที่เป็นเส้นชั้นความสูงด้วยวิธีการที่กล่าวมาแล้วคือคลิกที่เมนู Files > Advanced > Load Shapefile เลือกไฟล์ Contours.shp

 

  • ตอนนี้ก็พอแค่นี้ก่อนครับ ติดตามตอนหน้า จะนำฐานข้อมูล spatialite มาเปิดดูด้วย spatialite-gis และไปลองฐานข้อมูลด้วย QGIS ว่าจะ support ได้สักขนาดไหนกันครับ

Related

2 thoughts on “มาลองใช้ฐานข้อมูลเชิงพื้นที่ Spatialite ที่ทั้งเล็ก เร็ว และแรง ตอนที่ 1”

  1. Frogs Prince says:
    25/09/2015 at 13:15

    สวัสดีครับ ขอสอบถามครับ พอดีไปอ่านใน คู่มือ Spatiallite ได้เปรียบเทียบกับฐานข้อมูลตัวอื่นๆ แล้วยก Binary size มาเปรียบเทียบ อยากทราบว่า Binary size นี้มันคืออะไรครับ

    ในนี้ครับ https://www.gaia-gis.it/spatialite-2.1/SpatiaLite-manual.html

    ขอบคุณครับ

    Reply
    1. prajuab riabroy says:
      28/09/2015 at 13:59

      สวัสดีครับ คงหมายถึงขนาด execute file หรือ dynamic link library (dll) ที่ขนาดของ libsqlite3.dll ขนาด 199 KB และ libspatialite-2.dll ขนาดเพียง 93 KB ซึ่งขนาดเล็กมาก เวลา execute แล้วคงกินเมโมรี่นิดเดียวครับ

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

October 2026
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031  
« Sep    

Blog Stats

There was an issue retrieving stats. Please try again later.

Recent Posts

  • เร็วแรงทะลุนรกกับ POCUT (POint Cloud UTils)
  • อัพเดทแอพ “SurveyStar LDP Thailand” เพื่อรับกับยกร่างมาตรฐาน “TH-LDP”
  • ออกแอพใหม่ SurveyStar Traverse Pro สืบสานงานคำนวณวงรอบ ตอนที่ 2
  • ออกแอพใหม่ SurveyStar Traverse Pro สืบสานงานคำนวณวงรอบ ตอนที่ 1
  • โปรแกรมอรรถประโยชน์ Pocut (POint Cloud Utils)
  • โปรแกรมแปลงไฟล์แคดข้ามระบบพิกัด (Drawing Transformer)
  • มาตรฐานระบบพิกัดแผนที่แบบแอลดีพีของประเทศไทยสำหรับงานวิศวกรรมและการก่อสร้าง (Thailand Low Distortion Map Coordinate System for Engineering and Construction)
  • ประสบการณ์ใช้งาน Kimi K3 Code เขมือบแบบสยอง
  • สร้างแพลตฟอร์มดู Point Cloud บนเว็บด้วย Potree + CesiumJS — เรื่องเล่าจากสนามบินอู่ตะเภา
  • เมื่อวิศวกรสำรวจคำนวณเรื่องน้ำ – วิเคราะห์ระบบระบายน้ำบริเวณ RESA
  • แนะนำหนังสือ “จีออเดซี” ที่ยอดเยี่ยมของดร.พุทธิพล
  • ESPrtk ทำให้ ESP32 ใช้ไม่ได้? วิธีกู้คืน
  • กรณีศึกษา – คืนชีพ SDL30 ปี 2000 ด้วย ESP32 และแอพทำเอง SDL30 Collector
  • DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
  • รีวิวกูปรี (CoPre2) โปรแกรมประมวลผลไลดาร์จากค่าย CHCNav
  • DIY RTK Base Station (survey-grade) รุ่น V3.2 ด้วย Orange Pi 3 Zero + UM980 ตอนที่ 3
  • DIY RTK Base Station (survey-grade) รุ่น V3 ด้วย Orange Pi 3 Zero + UM980 ตอนที่ 2
  • เส้นทางและไทม์ไลน์ของใบรับรองความรู้ความชำนาญในการประกอบอาชีพวิศวกรรม(สำรวจ)ระดับวิศวกรวิชาชีพ
  • มัดแหนมรวมสามโปรแกรมไปใช้บนสโตร์ Snap ฝั่งลีนุกซ์
  • ปัดฝุ่น Traverse Pro เพิ่มรายละเอียดรายการคำนวณใหม่แบบแนวนอน (Landscape) และธีมมืด
  • DIY RTK Base Station (Survey-Grade) ด้วยชิป UM980 และบอร์ด ESP32 ตอนที่ 1
  • สร้าง NTRIP Caster ด้วย BNC บนคลาวด์แบบ DIY สำหรับ RTK Base Station ใช้ CHCNav P5
  • จับ AI มาไตรกรีฬา สร้างตัวติดตั้ง Snap สำหรับ Surveyor Pocket Tools กับประเด็นแฝงเร้นความเป็นส่วนตัวของผู้ใช้
  • ทดสอบรีด QGIS แบบโหดสัสด้วยชุดข้อมูล Open Building V3 โพลีกอน 74 ล้านหลัง
  • เมื่อ AI เป็นพิษชักจูงผู้ใช้ด้วยข้อมูลผิดๆ

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 122 other subscribers

Archives

  • October 2026
  • September 2026
  • August 2026
  • July 2026
  • May 2026
  • April 2026
  • March 2026
  • January 2026
  • December 2025
  • November 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • July 2024
  • May 2024
  • April 2024
  • January 2024
  • November 2023
  • October 2023
  • September 2023
  • July 2023
  • June 2023
  • May 2023
  • March 2023
  • February 2023
  • January 2023
  • November 2022
  • October 2022
  • September 2022
  • July 2022
  • May 2022
  • December 2021
  • October 2021
  • September 2021
  • August 2021
  • May 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • September 2019
  • August 2019
  • July 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • January 2018
  • November 2017
  • July 2017
  • June 2017
  • May 2017
  • April 2017
  • March 2017
  • February 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • August 2016
  • November 2015
  • March 2015
  • August 2014
  • March 2014
  • January 2014
  • December 2013
  • February 2012
  • January 2012
  • November 2011
  • October 2011
  • August 2011
  • April 2011
  • February 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • June 2010
  • April 2010
  • March 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • September 2009
  • August 2009

Recent Comments

  • priabroy on ออกแอพใหม่ SurveyStar Traverse Pro สืบสานงานคำนวณวงรอบ ตอนที่ 1
  • Konexana Yomleuangsa on ออกแอพใหม่ SurveyStar Traverse Pro สืบสานงานคำนวณวงรอบ ตอนที่ 1
  • เฟือง เถา on DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
  • priabroy on DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
  • ตรันฟองนาม on DIY RTK Base Station (survey-grade) รุ่น V3.21 ด้วย Raspberry Pi 2B + UM980 เมื่อคุณปู่กลับมาเป็นฮีโร่ ตอนที่ 4
©2026 Prajuab Riabroy's Blog | Design: Newspaperly WordPress Theme