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

แปลงข้อมูล CSV เป็นฐานข้อมูลเชิงพื้นที่ด้วย Spatialite

Posted on 16/11/2010

ข้อมูลทดสอบ

  • เขียนเรื่อง spatialite มา 2-3 ตอนแล้ว มาดูในตอนนี้สมมติว่ามี text file ที่เป็นรูปแบบ csv คั่นฟิลด์หรือคอลัมน์ด้วยเครื่องหมายคอมมา (,) ในข้อมูลมีคอลัมน์ค่าพิกัด X และ Y ด้วย เราจะมาแปลงเป็นฐานข้อมูลของ spatialite ซึ่งสามารถ export เป็น shapefile ได้ถ้าต้องการ สนใจดาวน์โหลดข้อมูลมาทดลองได้ตามลิงค์นี้ landmark_n.zip
ตัวอย่างข้อมูลเมื่อเปิดด้วย Notepad

ดาวน์โหลดโปรแกรม spatialite, spatialite-gui และ spatialite-gis

  • โปรแกรมและเครื่องมือที่จะใช้สำหรับการแปลงข้อมูลจะใช้ tools ที่ชื่อ spatialite-gui และการดูผลลัพธ์จะใช้ spatialite-gis สามารถดาวน์โหลดได้ที่ตามลิงค์นี้ spatialite ซึ่งจะมีให้ดาวน์โหลดหลาย platform ง่ายที่สุดก็คือเลือกดาวน์โหลดเฉพาะ spatialite-gui และ spatialite-gis ก็เพียงพอ

สร้างฐานข้อมูล

  • การสร้างฐานข้อมูล การสร้างตาราง(table) การเพิ่ม ลบ คอลัมน์ สามารถทำได้ใน spatialite-gui ได้หมดทั้งสามารถ query เพื่อสืบค้นด้าน spatial ได้ด้วย เมื่อเปิดโปรแกรมมาแล้ว จะทำการ load csv ที่ผมทำลิงค์ไว้ให้ตอนต้นๆ
สร้างฐานข้อมูล spatilalite ก่อน

Load CSV/Text

  • จะเห็น view และ table ที่ spatialite-gui สร้างมาให้เป็นดีฟอลต์ ต่อไปจะทำการ load csv คลิกที่เมนู Files > Advance > Load CSV/Text เลือกไฟล์ csv
Load CSV และตั้งค่าตัวคั่นเป็นคอมมาและโค๊ดของภาษาเป็น windows 874 (CP874)
แสดงตารางใหม่ของ landmark_n
  • ที่พาเนลด้านซ้ายตรงตาราง “landmark_n” คลิกขวาเลือก “edit table rows” ลองดูคอลัมน์ X และ Y
คอลัมน์ X,Y แสดงค่าพิกัดซึ่งจะนำมาสร้างเป็นคอลัมน์ Geometry

เพิ่มคอลัมน์ Geometry ด้วย AddColumnGeometry

  • เราจะสร้าง table ที่เก็บจุดแสดง landmark ด้วยการใช้ข้อมูล X,Y ที่อยู่ในคอลัมน์ที่ผมแสดงไว้ข้างต้น ด้วยการใช้ภาษา SQL ดังบรรทัดด้าน วิธีใช้ copy ไปไว้ที่ช่อง query ของ spatialite ดังรูปด้านล่าง สังเกตว่า 32647 คือ SRID แสดงระบบพิกัดของ UTM Zone 47N บนทรงรี WGS84

SELECT AddGeometryColumn('landmark_n','Geometry',32647,'POINT',2);

คำสั่ง Select AddGeometry เพื่อสร้างคอลัมน์เก็บจุด (geometry)
  • ในตอนนี้คอลัมน์ “Geometry” ที่ยัง Null อยู่ ลองใช้คำสั่ง “edit table rows” ดูอีกครั้ง
คอลัมน์ geometry

Update คอลัมน์ด้วย GeomFromText

  • ต่อไปจะ query ด้วย Update …GeomFromText คัดลอกโค๊ดด้านล่างไปแปะที่ช่อง queryแล้วคลิกที่ Execute SQL statement อธิบายอีกนิดว่าชื่อคอลัมน์ X และ Y เมื่อมาปรากฎในคำสั่งจะถูกหุ้มด้วยเครื่องหมาย || แล้วปิดด้วยเครื่องหมาย quote (‘) ถ้าเกิดคอลัมน์ X และ Y เป็นชื่ออื่นเช่น East และ North ตรงคำสั่ง POINT ก็จะกลายเป็น POINT(‘||EAST||’ ‘||NORTH||’)

UPDATE "landmark_n" SET Geometry = GeomFromText('POINT('||X||' '||Y||')',32647);

ใช้คำสั้ง query => update …geomfromtext เพื่อดึงค่าพิกัดจากคอลัมน์ X,Y

ความเป็น spatial เกิดขึ้นเมื่อ update ค่าพิกัดแล้ว

 

 

ทดสอบฐานข้อมูลด้วย spatialite-gis

 

 

    • ตอนนี้เราไม่ทราบว่าฐานข้อมูลเชิงพื้นที่จะมีสภาพเป็นอย่างไร ปิดทูลส์ spatialite-gui แล้วเปิด spatialite-gis เมื่อเปิดมาแล้วทำการ connect ไปที่ฐานข้อมูล “bangkokgis.sqlite” ที่เราสร้างไว้แล้ว ในตอนแรกโปรแกรมจะถามว่าให้สร้าง table เพิ่มหรือปล่าวเช่น table เก็บสัญลักษณ์ symbol ผมเลือก yes ตรงบรรทัดที่สองเพื่อเลือกให้ spatialite-gis สร้างให้อัติโนมัติ จะเห็นการแสดงผลเป็นจุด

 

 

Spatialite Tutorial

  • จะเห็นว่าใน post นี้มีคำสั่ง query ของ spatialite อยู่สองคำสั่ง ยังมีคำสั่งอื่นอีกพอสมควรที่น่าศึกษา มี tutorial ที่เขียนไว้ได้ดีพอสมควรใน website ของ spatialite เองสนใจไปดูได้ที่ spatialite tutorial
  • ความจริงฐานข้อมูล landmark_n เป็นไฟล์ Shape file แสดง landmark ของกรุงเทพมหานคร ผมดาวน์โหลดมาจาก website จำไม่ได้ว่าที่ไหนเพราะนานแล้ว ยังมีฐานข้อมูลเป็น shape file อีกหลายตัวที่เราจะนำมาทดสอบกันครั้งหน้า จะล้วงลึกเรื่อง query ด้าน spatial ก็ติดตามกันต่อไปนะครับ


Related

Leave a Reply Cancel reply

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

November 2026
M T W T F S S
 1
2345678
9101112131415
16171819202122
23242526272829
30  
« Oct    

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