Month: December 2010

โครงการ RTK-GPS ด้วย RTKLIB ที่ราคาถูกโคตรๆ (Low-cost RTK GPS)

RTK (Real Time Kinematic)

  • RTK เป็นเทคนิคการรังวัดแบบหนึ่งของงาน GPS ซึ่งให้ความละเอียดสูงได้ละเอียดถึง 2-3 ซม. (ประมาณ 1 นิ้ว) ระบบนี้ต้องการ GPS อยู่สองชุดคือ Reference และ Rover เครื่อง GPS ที่ติดตั้งบน Reference station บนหมุดที่ทราบค่าพิกัดทำการวัด (Measurements) แล้วส่ง Measurements นั้นไปให้เครื่อง GPS ชุด Rover ผ่านทาง Radio modem, โทรศัพท์มือถือ และผ่านทางอินเทอร์เน็ตก็ได้ เครื่อง Rover จะทำการคำนวณหาค่าตัวเลขปริศนา (Integer Ambiguity) แล้วนำมาปรับแก้ค่าพิกัดของ Rover ให้ได้ความถูกต้อง
RTK ระบบที่ใช้ Radio Modem เป็นตัวรับและส่งข้อมูล (ภาพจาก http://water.usgs.gov/osw/gps/index.html)
  • การประยุกต์ใช้งานที่ต้องการความถูกต้องสูงเช่นงาน Geodetic Survey และงานก่อสร้าง

รู้จักโครงการ RTKLIB

  • ครั้งแรกที่รู้จักโครงการนี้ ผมรู้สึกว่าทึ่งและน่าสนใจมากเพราะ GPS ระบบ RTK นั้น สนนราคาต่อชุดราคานั้นล้านบาทต้นๆต่อชุด ถ้าซื้อมาจริงๆอย่างน้อยต้อง 2 ชุด และตัว GPS ต้องเป็นเครื่องรับสัญญาณสองความถี่ ชุดแรกต้องติดตั้ง Base Station หรือ Reference Station เอง (เพราะในเมืองไทย VRS -Virtual Reference Station Network ยังไม่แพร่หลาย เท่าที่ทราบหน่วยงานราชการบางหน่วยเพิ่งจะเริ่มติดตั้ง) ส่วนชุดที่สองจะเป็น Rover การรับส่งข้อมูลระหว่าง Reference Station และ Rover ผ่านทางวิทยุโมเด็มหรือผ่านระบบโทรศัพท์มือถือก็ได้ แต่ถ้าบ้านเรามี VRS ซื้อ GPS มาชุดเดียวก็พอ ซึ่งถ้าใช้แบบ Low-cost RTK ที่ว่าสนนราคาไม่เกิน 20,000 บาท ใช้ GPS ที่เป็นแบบรับความถี่เดียว ที่สามารถนำมาทำ RTK โดยการใช้ RTKLIB ได้เพียงไม่กี่ยี่ห้อเท่านั้น
RTK ชุด Rover ราคาล้านบาทต้นๆ (ราคารวม Controller แล้ว)
  • RTKLIB เป็น opensource ที่พัฒนาไลบรารีขึ้นมาเพื่อช่วยให้ GPS ราคาถูกแบบความถี่เดียวสามารถใช้ในโหมด RTK ได้คำนวณหาค่าพิกัดด้วยความละเอียดสูง (Precise Positioning) สำหรับงานคำนวณ GPS ซึ่งทูลส์ให้เลือกใช้หลายตัว RTKLIB พัฒนาด้วย Ansi C (C89) เป็น cross-platform ใช้ได้ทั้งฝั่ง Linux และ Windows RTKLIB พัฒนาโดย Tomoji Takasu และ Akio Yasuda แห่งสถาบัน Laboratory of Satellite Navigation, Tokyo University of Marine Science and Technology สนใจโครงการนี้ไปดูได้ที่ลิงค์ RTKLIB ตอนนี้เป็น version 2.4.0

goGPS โครงการที่คล้ายๆกัน

  • จุดมุ่งหมายของโครงการ goGPS คล้ายกับ RTKLIB คือ ทำให้ GPS มีค่าพิกัดที่ละเอียดมากขึ้นประมาณ 30-50 ซม.แต่ไม่ถึงระดับเซ็นติเมตรเหมือนกับ RTKLIB โครงการ goGPS พัฒนาโดย Eugenio Realini แห่ง Osaka City University,  Japan และ Mirko Reguzzoni แห่ง OGS c/o Politecnico di Milano, Italy
  • ดั้งเดิม goGPS พัฒนาด้วย MATLAB เป็น opensource  ปัจจุบันได้แปลงเป็นโค๊ด C/C++ แล้ว และกำลังแปลงโค๊ดเป็น Java ด้วย สนใจโครงการนี้ไปดูได้ที่ลิงค์ goGPS

ความต่างของโครงการ RTKLIB และ goGPS

  • ความถูกต้องของค่าพิกัด (Accuracy) RTKLIB ทำได้ระดับเซ็นติเมตร ส่วน goGPS ทำได้ที่ 30 – 50 เซ็นติเมตร ความต่างของ Accuracy เกิดจากวิธีการคำนวณ โครงการ RTKLIB มุ่งคำนวณหาตัวเลขปริศนา (Fix phase ambiguity) แต่ goGPS พยายามคำนวณให้อยู่ในโหมด floating แล้วใช้อัลการิทึ่ม Kalman Filter คำนวนด้วยการใช้ DTMs ช่วย (งงหรือปล่าว ผมก็งง)

Hardware สำหรับ Low-Cost RTK

    • ความเหมือนของ Hardware คือเครื่อง GPS สองโครงการใจตรงกันคือส่วนใหญ่จะใช้ยี่ห้อ U-Blox เหมือนๆกัน ความต่างอยู่ที่จานรับสัญญาณ (Antenna) ของ goGPS ไม่เลือก แต่ RTKLIB ระบุว่าให้ใช้ของดีๆแบบสองความถี่ตัวอย่างก็คือของ Novatel รุ่น GPS-702-GG+ ส่วนยี่ห้ออื่นเฉพาะบางรุ่นเท่านั้นที่โครงการ RTKLIB ใช้ได้แก่ Hemisphere, Skytraq ที่สำคัญที่สุดเครื่อง GPS ราคาถูกสามารถนำมาใช้ได้ต้อง output ข้อมูลเป็นแบบ Raw Binary Data Message
    • ถ้าดูใน Data sheet ของ U-Blox LEA-4T จะเห็น spec. ดังนี้

“The LEA-4T  also supports raw measurement data
(carrier phase with half-cycle ambiguity resolved, code
phase and Doppler measurements) which can be used
in external applications that offer precision
positioning, real-time kinematics (RTK) and attitude
sensing.”

  • การรังวัด RTK ตัว Rover ถ้าใช้อุปกรณ์ High end ส่วนใหญ่จะมี GPS หนึ่งตัว มี Controller หนึ่งตัวที่ทำหน้าที่เป็นโปรแกรม เก็บข้อมูลงานสำรวจ และอาจจะมีวิทยุโมเด็มรับสัญญาณจาก Reference Station หรืออาจจะผ่านทางโทรศัพท์มือถือหรือผ่านทางอินเทอร์เน็ตก็ได้ แต่สำหรับ Low-cost RTK ยังไม่มีใครทำ Hardware ทำหน้าที่แบบ Controller อย่างน้อยต้องใช้ Notebook ทำหน้าที่รันโปรแกรมที่เรียกใช้ RTKLIB
โฉมหน้า GPS ยี่ห้อ U-Blox ขนาดเล็กมากๆ
จานรับสัญญาณ GPS ของ Novatel รุ่น 702GG แบบสองความถี่
  • แต่ผู้พัฒนา RTKLIB ไม่ได้หยุดแค่นั้นเพราะถ้าลำพังเอา Notebook กางเดินสำรวจก็คงไม่สะดวก ทางผู้พัฒนา RTKLIB เลยหันไปใช้บอร์ดขนาดเล็กๆ เรียกว่า BeagleBoard ดังรูปด้านล่าง
โฉมหน้า BeagleBoard

คุณสมบัติ BeagleBoard

  • ใช้ CPU ของ ARM ตอนนี้ความเร็วประมาณ 600 MHz – 1 GHz ไม่มี Harddisk ใช้ SD Carrd แต่มี 3D Graphics Accelerator (ใช้ OpenGL เป็นตัวขับเคลื่อน) มี Lan กินไฟน้อยจนเหลือเชื่อ ตัวบอร์ดรองรับ OS ได้หลายอย่างเช่น Ubuntu TM , Android TM , MeeGo TM , WinCE TM , QNX TM , Angstrom, Symbian TM , Debian, Gentoo ตอนที่เขียนอยู่นี้รุ่น xM ออกมาแล้วค่อนข้างแรงเอาเหมือนกัน มีแรม 512 MB, CPU 1.0 GHz ที่สำคัญคือดู HDTV ได้ (ว๊าว!!!) ราคาตอนนี้เหลืิอเพียง $149 เท่านั้นเอง ผมค้นดูราคาในเมืองไทยแพงเอาเรื่องเกือบๆหนึ่งหมื่นบาท ถ้าราคาเท่าๆที่อเมริกาก็น่าทุบกระปุกเอามาเล่นเหมือนกัน สนใจไปดูได้ที่ลิงค์ Beagleboard.org มี vdo clip ที่ youtube จนดูไม่หวัดไม่ไหว

การ ต่อเครื่อง GPS U-ฺBlox กับ BeagleBoard

  • ลักษณะการต่อที่ผู้พัฒนาโครงการ RTKLIB นำมาต่อกันแบบเปลือยยังไม่ได้ทำ case เป็นเรื่องเป็นราวลองดูรูปด้านล่าง
การต่อ U-Blox เข้ากับ BeagleBoard
diagram การต่อ U-Blox เข้ากับ Beagleboard

การติดตั้ง Software บน Beagleboard

  • ทางผู้พัฒนาเลือก Ubuntu สำหรับ  ARM ติดตั้งบน SD Card และบู๊ตจาก SD Card โดยติดตั้ง OS และ RTKLIB ดังตารางด้านล่าง
ติดตั้ง OS และ RTKLIB บน Beagleboard

การทดสอบ

  • การทดสอบในที่นี้อยู่ที่อยู่ญี่ปุ่น มีหมุด Reference Station ของ GEONET ซึงหมุดเหล่านี้เรียกว่า CORS (Continuous Operating  Reference Stations) ส่งค่า Measurement ของหมุดออกมาทาง server ที่เรียกว่า NTRIP caster ด้วยโปรโตคอล RTCM 3.1 ผ่านทางอินเทอร์เน็ต โดยที่ค่า measurement และค่าพิกัดของหมุดจะส่งออกมาทาง message เบอร์ 1004 และ 1005 ดูไดอะแกรมด้านล่าง มีข้อสังเกตว่า PC ที่ระบุในไดอะแกรมด้านล่างก็คือ Beagleboard ที่ติดตั้ง Ubuntu นั่นเอง การต่ออินเทอร์เน็ตใช้ usb modem
ไดอะแกรมแสดงการทดสอบรับสัญญาณจาก Reference station ผ่านทางอินเทอร์เน็ต

ส่วนประกอบและการทำงานของ RTKLIB

  • ใน RTKLIB มีทูลส์อยู่หลายตัวเช่น RTKNAVI(GUI)/RTKRCV(console) ทำหน้าที่รับข้อมูล measurement จาก reference station แล้วนำข้อมูล measurement ที่ได้จาก GPS เครื่อง rover แล้วนำมาคำนวณแบบ real time จะได้ค่าพิกัดที่มี accuracy ได้ระดับเซ็นติเมตร รูปด้านล่างเป็น RTKNAVI ที่รันบนวินโดส์
RTKNAVI
  • RTKPLOT แสดงรูปแผนที่ขณะที่ได้จากการรังวัดด้วย RTKLIB
RTKPLOT

ผลการทดสอบ

  • การทดสอบของผู้พัฒนา RTKLIB  ระบุว่าติดตั้ง antenna ของ Novatel GPS-702-GG บนหลังคา (น่าจะเป็นหลังคาบ้านหรือตึก) เีปรียบเทียบผลการรังวัดกับการวัดแบบ  Static บนหมุดเดียวกันจะให้ผลลัพธ์ซึ่งแยกเป็น N-S (North-South), E-W (East-West) และ U-D (Up-Down) สังเกตว่าช่วงแถบสีส้มน่าจะเป็นช่วงที่ไม่สามารถหาค่า Fix ได้ (ไม่สามารถหา integer ambiguity ได้) ทำให้ผลลัพธ์รวมแทนที่จะได้ accuracy ที่ระดับ 1 ซม. + 1 ppm x ระยะทาง base line
ผลลัพธ์ของการทดสอบแสดงในรูป position error
ผลลัพธ์แสดง RMS Error

สรุป

  • ตามความคิดของผมเองไม่เลวเลยครับสำหรับเครื่อง GPS วัดแบบ RTK ที่ให้ผลลัพธ์ได้ขนาดนี้ ถึงแม้ผลการทดสอบจะออกมาได้แย่กว่าที่ทางผู้พัฒนา RTKLIB คาดการณ์ไว้ก็ตาม เพาระอุปกรณ์ที่นำมาทดสอบทั้งหมดราคารวมกันไม่เกิน 20,000 บาท ตามผลการทดสอบดังตารางด้านบนที่สามารถ fix ได้ 56.9% ที่เหลือจากนี้น่าจะให้ผลลัพธ์เป็น float ซึงจะได้ accuracy อยู่ระดับไม่เกิน 5o ซม. (น่าจะดีกว่า DGPS) ค่า accuracy ขนาดนี้เพียงพอจะนำมาใฃ้งานได้หลายๆรูปแบบที่ไม่ต้องการค่า accuracy ระัดับเซ็นติเมตร จุดอ่อนอีกอย่างคือระยะทางระหว่าง Reference Station กับ Rover ต้องไม่ห่างกันมาก ในการทดสอบนี้ระยะห่างประมาณ 6 กม. ระยะห่างที่มากขึ้นจะทำให้การคำนวณ Fix solution ได้ยากลำบากมากขึ้น
  • RTKLIB ในตอนนี้มีฟังก์ชั่นมากกว่าจะทำ RTK สามารถนำมาคำนวณแบบ Post Processing ได้จากทูลส์ชื่อ RTKPOST สนับสนุน Static, Fast Static, PPP ซึ่งในตอนหน้าผมจะนำการคำนวณเหล่านี้มานำเสนอในตอนต่อไป
  • ข่าวร้าย ก็คือ Hexagon บริษัทฯ จากสวีเดนซื้อกิจการ NovAtel ไปเรียบร้อย และที่โด่งดังก็คือซื้อกิจการของ Leica Geosystems น่าเศร้าเพราะเท่าที่ดูปฎิกิริยาของผู้คนพบว่า Hexagon ค่อนข้างจะผูกขาดการแข่งขัน เป็นที่วิตกว่าผลิตภัณฑ์แบบ U-Blox LEA-4T หรือ AEK-4T จะไม่ทำมาอีกหรือทำออกมาแต่ก็ลดฟีเจอร์ลง หรือคงฟีเจอร์เดิมแต่ก็ขายแพงซะ จนโครงการ low-cost RTK-GPS อาจจะได้แค่โครงการในฝัน

เอกสารอ้างอิง

1)  Development, Evaluation and Application of RTKLIB: A program library for RTK-GPS (ภาษาญี่ปุ่น)

2)  RTKLIB: Open Source Program Package for RTK-GPS

3)  Development of the low-cost RTK-GPS receiver with an open source program package RTKLIB

4)  Real-time PPP with RTKLIB and IGS real-time satellite orbit and clock

การสืบค้น (Query) ข้อมูลเชิงพื้นที่ด้วย Spatialite (ตอนที่ 1)

  • ตอนที่แล้วผมเสนอเรื่องการแปลงไฟล์ CSV เป็นข้อมูลเชิงพื้นที่ หรือเรียกกันว่า Spatial converter ฟีเจอร์ตัวนี้สามารถทำได้ง่ายๆในโปรแกรมด้าน GIS เช่น MapWindow (ข้อสำคัญคือในข้อมูล CSV นั้นต้องมีคอลัมน์ X, Y เก็บค่าพิกัดด้วย) แต่ใน spatialite ใช้คำสั่ง query เชิงพื้นที่สามารถทำให้ user ได้เข้าใจได้ลึกซึ้งกว่าใช้โปรแกรมสำเร็จรูป ซึ่งก็ไม่ได้ยากจนเกินไป มาดูตอนนี้ผมจะเสนอ การใช้ query ลึกเข้าไปอีกนิดเพื่อแสดงความสัมพันธ์ในเชิงพื้นที่ ระหว่างฐานข้อมูล 2 ตัว

ดาวน์โหลดฐานข้อมูลตัวอย่าง

  • ฐานข้อมูลดั้งเดิมจะเป็น shape file ทั้งคู่ ตัวแรกผมเสนอไปแล้วในตอนแรกเป็นฐานข้อมูลแบบ point แสดง  landmark สถานที่ในกรุงเทพฯ ส่วนตัวที่สองจะเป็น shape แบบ polygon แสดงขอบเขตของแขวงและเขต
  • สนใจข้อมูลทดสอบดาวน์โหลดได้ตามลิงค์นี้ spatialite_bangkokgis2.zip เราจะใช้โปรแกรม spatialite-gui ในการ import shape file เข้าไปในฐานข้อมูล spatialite แล้วจะลอง query กันดูความสัมพันธ์ในเชิงพื้นที่ จากนั้นลองเปิดดูด้วย spatialite-gis

Import Shape file เข้า spatialite

  • เมื่อดาวน์โหลดมาแล้ว unzip ดูจะเห็นไฟล์เป็น shape file สองชุด คือไฟล์  landmark_n และ subdist50 เปิดโปรแกรม spatialite-gui สร้างฐานข้อมูลของ spatialite ใหม่ คลิกที่เมนู Files > Create a New (Empty) SQLite DB… จากนั้นเลืิอกโฟลเดอร์ที่จัดเก็บฐานข้อมูลแล้วเซฟชื่อ ผมตั้งชื่อเป็น bangkokgis2.sqlite
สร้างฐานข้อมูล spatialite ใหม่
  • จากนั้นใช้เมนู Files > Advanced > Load Shapefile
Import Shapefile
  • จากข้อมูลที่ดาวน์โหลดมา ผมเลือก subdist50 ก่อน อย่าลืมตั้งระบบพิกัด (SRID) เป็น 32647 (UTM47N/WGS84)
เลือก shapefile ตั้ง SRID เลือกโค๊ดภาษาไทยเป็น CP874
  • จากนั้นนำเข้า shapefile ชื่อ landmark_n แล้วตั้งค่า SRID เป็น 32647 และเลือกโค๊ดภาษาไทยเป็น CP874

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

  • ปิดโปรแกรม spatialite-gui แล้วเปิด spatialite-gis เปิดฐานข้อมูล bangkokgis2.sqlite จะเห็นผลการแสดงดังรูปด้านล่าง

 

 

ฐานข้อมูลเมื่อเปิดด้วย spatialite-gis

 

    • จัดการแสดงผลตรงเขตกทม.ให้ดูง่ายด้วยการตั้ง layer คลิกขวาที่ subdist50 แล้วเลือกเมนู Layer configuration > Classify ทำการแยกชั้น layer ตามชื่อเขตกทม. ดังรูปด้านล่าง

 

 

  • จะเห็นการแสดงผลดังรูปด้านล่าง เสร็จแล้วก็ปิด spatialite-gis
แยกสีตาราง subdist50

ทำไมไม่รวม spatialite-gui และ spatialite-gis เป็นโปรแกรมเดียว

  • กลับมาที่ spatialite-gui อีกครั้ง ผมสงสัยว่าทำไมต้องแยกเป็น spatialite-gis กับ spatialite-gui ผมว่าสองโปรแกรมนี้สามารถรวมกันได้เป็นโปรแกรมเดียว พอเข้า spatialite-gui ก็มองไม่เห็นกราฟฟิค พอเข้า spatialite-gis ก็ไม่สามารถ query ได้
  • ทำการเปิดข้อมูล bangkokgis2.sqlite ด้วย spatialite-gui ที่พาเนลด้านซ้ายคลิกที่เลเยอร์ subdist50 เลือกเมนู Edit table rows จะเห็นตารางแขวงและเขตของกทม,
ตาราง subdist50 แสดงแขวงและเขตของกทม.

เริ่มต้น Query ข้อมูลเชิงพื้นที่

  • ถ้าลองมองดูแค่ตารางข้อมูลแสดงสถานที่ที่สำคัญของกทม. (landmark_n) และตารางข้อมูลแสดงแขวงและเขตของกทม, (subdist50) จะเห็นสองตารางข้อมูลนี้ไม่มีอะไรสัมพันธ์กันเลย ถ้าใช้การ query ธรรมดาว่ามีโรงเรียนทั้งหมดในเขตราชเทวีมีกี่โรง ไม่สามารถทำได้เพราะในตาราง landmark_n ไม่มีฟิลด์ที่แสดง location ของแขวงและเขต แต่ฟิลด์ที่เก็บ geometry point ของ landmark และรูป polygon ของเขต (subdist50) สามารถเชื่อมโยงกันได้ด้วยค่าพิกัดจึงเรียกว่า Spatial reference ถ้าอ่านแล้วงงมาดูตัวอย่างกัน

SELECT pt.type,pt.name,poly.dname, poly.sname,X(pt.geometry),Y(pt.geometry)
FROM “landmark_n” as pt, “subdist50” as poly
WHERE pt.Type=4700 and poly.DNAME = “เขตราชเทวี”
and intersects(pt.geometry, poly.geometry)

  • ดูตัวอย่าง query ด้านบนจะเห็น syntax ธรรมดาของ Select ….From…..Where….. ผม alias ชื่อ table ให้ง่ายคือ landmark_n เป็น pt และ subdist50 เป็น poly ให้ดูง่ายและเข้าใจง่ายด้วย
  • ตรงหลัง Select จะเห็น X(pt.geometry) ให้แสดงค่าพิกัด X (Easting) เช่นเดียวกันกับ Yตรง Where ผมใส่  pt.Type  = 4700 ซึ่งเป็นโรงเรียน เมื่อจะหาโรงเรียนอยู่ในเขตราชเทวีก็ใช้คำสั่งดังนี้  poly.DNAME = “เขตราชเทวี”
  • สืบเนื่องจาก syntax ก่อนหน้าคือเรากำหนดเงื่อนไขคือ WHERE pt.Type=4700 and poly.DNAME = “เขตราชเทวี” เมื่อใช้คู่กับ intersects(pt.geometry,poly.geometry) จึงเป็นการหาว่ารูปทรงเรขาคณิต(polygon) ของเขตราชเทวี เมื่อ intersects กับจุด(point) ที่เป็นโรงเรียนทั้งหมดในกทม. จะได้โรงเรียนที่อยู่ในเขตราชเทวีเท่าไหร่  จัดการคัดลอก syntax ด้านบนแล้วมา paste ลงในช่อง sql statement แล้วจัดการคลิก execute จะได้ผลลัพธ์ดังรูปด้านล่าง ซึ่งในตอนนี้ผมค้นได้ทั้งหมด 45 โรง
ผลลัพธ์แสดงผลการ Query

กลไกการทำงานของ Spatial reference

  • จากตัวอย่างที่ผ่านมาจะเห็นฟังก์ชั่นของ spatial คือ intersects ซึ่งเป็นส่วนหนึ่งของฟังก์ชั่นจากไลบรารี GEOS (เรียกใช้ด้วย spatialite) ที่นำรูปทรงเรขาคณิตมา operation กัน ตัวอย่างเช่นหาจุดตัดระหว่างเส้นตรงสองเส้น หรือระหว่าง polyline ตัดกันกับ polygon ก่อนจะไปต่อลองมาทำความรู้จักกับ MBR (Mininum Bounding Rectangle)

MBR (Minimum Bounding Rectangle)

  • MBR บางครั้งเรียกสั้นๆว่า Bounding Box หรือ Envelope เป็นรูปทรงสี่เหลี่ยมแสดงค่าพิกัดน้อยที่สุดและมากที่สุดแทนรูปทรงเรขาคณิตต่อไปนี้ได้แก่ จุด, เส้น, โพลีกอน เพื่อให้ง่ายและสะดวกในการใช้ฟังก์ชั่นด้านเรขาคณิต เช่นจะหาว่าเส้น polyline สองเส้นตัดกันหรือไม่ ขั้นต้นฟังก์ชั่นจะหาว่า MBR ทับกันหรือไม่ ถ้าไม่ทับกันก็หยุด ถ้าทับกันจะนำ polyline แต่ละ segment มา intersect กับ polyline อีกเส้นว่ามีจุดตัดกันหรือไม่ ซึ่งถ้าใช้ MBR ตรวจสอบก่อนจะทุ่นระยะเวลาได้มาก
MBR ของ polyline (รูปซ้าย MBR ไม่ทับกัน, รูปกลาง MBR ทับกันแต่เส้นไม่ตัด และรูปขวา MBR ทับกันและเส้น polyline ตัดกันด้วย)

ลักษณะการ operation ด้วยฟังก์ชั่นด้านเรขาคณิต

  • มีหลากหลายรูปแบบมากลองดูรูปภาพประกอบ
ลักษณะการ operation ของรูปทรงเรขาคณิต
  • ก็ติดตามกันตอนต่อไปนะครับ