WKB DECODE

      WKB คือรูปบบการเข้ารหัสข้อมูล Geometry ในฐานข้อมูล ซึ่งย้อมาจาก well know binary มีรูปแบบการจัดเก็บเป็นไบนารีดังนั้นการทำงานจึงรวดเร็วกว่า WKT ซึ่งเป็น text แต่ข้อจำกัดก็คือมนุษย์อย่างเราๆท่านๆไม่สามารถอ่านข้อมูลไบนารีนั้นได้

      วันนี้ผมจะเอาเรื่องการ decode binary มาฝากพี่ๆน้องๆที่ใช้งาน spatial database เพราะถือว่าเป็นพื้นฐานที่สำคัญอันหนึ่ง สำหรับท่านที่ใช้งาน postgresql กับ postgis การ decode ข้อมูล WKB สามารถใช้คำสั่ง SQL ได้ดังนี้นะครับ

SELECT ST_AsText(ST_GeomFromWKB(decode('0101000000e5d022dbf93e2e40dbf97e6abc743540', 'hex'),4326));
   จากคำสั่งคือผมมีชุดข้อมูลชุดหนึ่งซึ่งเป็นการเข้ารหัสแบบไบนารี จากนั้นก็ decode ข้อมูลชนิด hex แล้วแปลงให้เป็น WKB โดยใช้ ฟังก์ชั่น ST_GeomFromWKB
แล้วใช้ ST_ASText เพื่อดูผลลัพธ์ที่ได้ก็จะ point(15.123 21.456)
  สำหรับ developer ที่ต้องการใช้ความสามารถการ decode ข้อมูล WKB ก็สามารถทำได้เหมือนการ decode ข้อมูลไบนารีทั่วไปครับ ผมมีตัวอย่างภาษา Python มาแนะนำ
โดยผมใช้ Python ร่วมกับ shapely ที่เป็นไลบารีสำหรับ read/write ข้อมูล spatial (อ่านรายละเอียดที่ http://trac.gispython.org/lab/wiki/Shapely) โดยเขียน code สั้นๆดังนี้
>>> from shapely.wkb import loads
>>> g = loads('01010000005839B4C876BEF33F83C0CAA145B61640'.decode('hex'))
>>> g.wkt
ผลลัพธ์ก็จะได้เหมือนกันครับ
Advertisements

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

สร้างเว็บไซต์หรือบล็อกฟรีที่ WordPress.com.

Up ↑

%d bloggers like this: