Geometric - เก็บพิกัดกันยังไง เรื่องที่ผมยังไม่รู้

by Little Bear @1 ส.ค. 53 12:27 ( IP : 61...24 ) | Tags : Geometric , Google , Mysql

สงสัยอยู่นานแล้วว่า คนอื่นเขาเก็บพิกัดละติจูด ลองกิจูดกันยังไง เก็บเป็น text เป็น numeric แยกฟิลด์ไหม ลองเก็บมาหลายรูปแบบจนเริ่มมั่ว ก็เลยลองหาดูว่าคนอื่นเขาเก็บค่าพิกัดกันอย่างไร

เลยเห็น MySql data typa ตัวใหม่ คือ SPATIAL ซึ่งจะเก็บเป็น GEOMETRY , POINT , LINESTRING , MULTIPOINT, MULTILINESTRING , MULTIPOLYGON , GEOMETRYCOLLECTION

เริ่มเข้าเค้า งั้นเลยลองเก็บแบบนี้ดู เห็นบอกว่าสามารถคำนวณพิกัด ระยะทาง ได้เลย

ลองสร้างตารางดู

CREATE TABLE `place` (
  `name` varchar(100) DEFAULT NULL,
  `location` point DEFAULT NULL,
  PRIMARY KEY (`name`)
) ENGINE=MyISAM;

เวลา add record ต้องระบุ location เป็น POINT(7.10,100.6) เช่น

INSERT INTO `place` (`name`,`location`)
 VALUES
 ("สงขลา",PointFromText("POINT(7.122219 100.59288)"));

เวลา query ก็ใช้

SELECT `name`,AsText(`location`),X(location),Y(`location`)
 FROM `place`;

แหล่งเรียนรู้