MySQL 空間資料 簡單操作

來源:互聯網
上載者:User

標籤:equal   資料庫   incr   返回結果   color   cts   text   contains   查詢   

在做的項目中需要,自己繪製地區圖形,並儲存起來,後面還有更新的需要,存檔案不方面,想到現在資料庫都支援空間資料庫。

現在用的就是 MySQL ,就繼續用 MySQL 來儲存、管理空間資料。下面就做一些簡單的記錄。

建立空間資料

CREATE TABLE `t_pot` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `name` varchar(255) DEFAULT NULL,  `pot` point DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

上面是建的一個包含點資料的表

CREATE TABLE `t_polygon` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `name` varchar(255) DEFAULT NULL,  `pgn` polygon DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

上面是建的一個包含面資料的表

MySQL 中的空間資料類型:point、linestring、polygon、geometry、multipoint、multilinestring、multipolygon、geometrycollection

空間資料操作

下面是對資料的一些查詢、分析等動作陳述式

先插入一些樣本資料

INSERT INTO `t_polygon` VALUES (‘1‘, ‘ABCD‘, GeomFromText(‘POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))‘));INSERT INTO `t_polygon` VALUES (‘2‘, ‘AEGF‘, GeomFromText(‘POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))‘));INSERT INTO `t_polygon` VALUES (‘3‘, ‘CEGFBD‘, GeomFromText(‘POLYGON((0 2, 0 4, 4 4, 4 0, 2 0, 2 2, 0 2))‘));INSERT INTO `t_polygon` VALUES (‘4‘, ‘AHJIK‘, GeomFromText(‘POLYGON((0 0, 0 6, 6 6, 6 0, 0 0), (2 2, 4 4, 4 2, 2 2))‘));INSERT INTO `t_polygon` VALUES (‘5‘, ‘DGK‘, GeomFromText(‘POLYGON((2 2, 4 4, 4 2, 2 2))‘));INSERT INTO `t_polygon` VALUES (‘6‘, ‘GKJ‘, GeomFromText(‘POLYGON((4 4, 4 2, 6 6, 4 4))‘));INSERT INTO `t_polygon` VALUES (‘7‘, ‘ADF‘, GeomFromText(‘POLYGON((0 0, 2 2, 4 0, 0 0))‘));INSERT INTO `t_polygon` VALUES (‘8‘, ‘LDK‘, GeomFromText(‘POLYGON((1 1, 2 2, 4 2, 1 1))‘));INSERT INTO `t_pot` VALUES (‘1‘, ‘A‘, GeomFromText(‘POINT(0 0)‘));INSERT INTO `t_pot` VALUES (‘2‘, ‘B‘, GeomFromText(‘POINT(0 2)‘));INSERT INTO `t_pot` VALUES (‘3‘, ‘C‘, GeomFromText(‘POINT(2 0)‘));INSERT INTO `t_pot` VALUES (‘4‘, ‘D‘, GeomFromText(‘POINT(2 2)‘));

一些空間對象方法


-- 包含,MBRCONTAINS,第一個參數是包含的要素,第二個是被包含的要素,第一個包含第二個返回1,否則返回0SELECT py.`name`,p.`name`,MBRCONTAINS(py.pgn,p.pot) FROM t_polygon py,t_pot p;-- 被包含,MBRWITHIN,和上面一個參數相反,返回結果一樣SELECT py.`name`,p.`name`,MBRWITHIN(p.pot,py.pgn) FROM t_polygon py,t_pot p;-- 不相交,MBRDISJOINT,參數沒有先後分,不相交返回1,否則返回1SELECT py.`name`,p.`name`,MBRDISJOINT(p.pot,py.pgn) FROM t_polygon py,t_pot p;-- 相等,MBREQUAL,兩個要素是否相等,相等返回1,否則返回0SELECT py.`name`,p.`name`,MBREQUAL(p.pot,py.pgn) FROM t_polygon py,t_pot p;-- 相交,MBREQUAL,兩個要素是否相交,相交返回1,否則返回0SELECT py.`name`,p.`name`,MBRINTERSECTS(p.pot,py.pgn) FROM t_polygon py,t_pot p;-- 重疊,MBROVERLAPS,兩個要素是否重疊,重疊返回1,否則返回0SELECT py.`name`,p.`name`,MBROVERLAPS(p.pot,py.pgn) FROM t_polygon py,t_pot p;-- 相切,MBREQUAL,兩個要素是否相切,相切返回1,否則返回0SELECT py.`name`,p.`name`,MBREQUAL(p.pot,py.pgn) FROM t_polygon py,t_pot p;

 

INSERT INTO `t_polygon` VALUES (‘1‘, ‘ABCD‘, GeomFromText(‘POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))‘));INSERT INTO `t_polygon` VALUES (‘2‘, ‘AEGF‘, GeomFromText(‘POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))‘));INSERT INTO `t_polygon` VALUES (‘3‘, ‘CEGFBD‘, GeomFromText(‘POLYGON((0 2, 0 4, 4 4, 4 0, 2 0, 2 2, 0 2))‘));INSERT INTO `t_polygon` VALUES (‘4‘, ‘AHJIK‘, GeomFromText(‘POLYGON((0 0, 0 6, 6 6, 6 0, 0 0), (2 2, 4 4, 4 2, 2 2))‘));INSERT INTO `t_polygon` VALUES (‘5‘, ‘DGK‘, GeomFromText(‘POLYGON((2 2, 4 4, 4 2, 2 2))‘));INSERT INTO `t_polygon` VALUES (‘6‘, ‘GKJ‘, GeomFromText(‘POLYGON((4 4, 4 2, 6 6, 4 4))‘));INSERT INTO `t_polygon` VALUES (‘7‘, ‘ADF‘, GeomFromText(‘POLYGON((0 0, 2 2, 4 0, 0 0))‘));INSERT INTO `t_polygon` VALUES (‘8‘, ‘LDK‘, GeomFromText(‘POLYGON((1 1, 2 2, 4 2, 1 1))‘));

MySQL 空間資料 簡單操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.