創建表,填充測試數據
create table geom1(id int not null auto_increment primary key,geo geometry); insert into geom1(geo)values(ST_GeomFromText('point(1 1 )',3857)); insert into geom1(geo)values(ST_GeomFromText('polygon((0 0,10 0,10 10,0 10,0 0))',3857));
select AsText(geo) from geom1;/*以WKT格式獲取空間數據*/ select AsBinary(geo) from geom1; /*以WKB格式獲取空間數據*/
修改列為自增類型
alter table cc change id id int primary key auto_increment;
建立空間索引,索引列必須為非空
alter table geom1 change geo geo geometry not null;
create SPATIAL index idx_geo on geom1(geo)
常用空間計算操作
MBRContains(g1,g2) 返回1或0以指明g1的最小邊界矩形是否包含g2的最小邊界矩形。 MBRDisjoint(g1,g2) 返回1或0以指明兩個幾何變量g1和g2的最小邊界矩形是否不相交。 MBREqual(g1,g2) 返回1或0以指明兩個幾何變量g1和g2的最小邊界矩形是否相同。 MBRIntersects(g1,g2) 返回1或0以指明兩個幾何變量g1和g2的最小邊界矩形是否相交。 MBROverlaps(g1,g2) 返回1或0以指明兩個幾何變量g1和g2的最小邊界矩形是否交迭。 MBRTouches(g1,g2) 返回1或0以指明兩個幾何變量g1和g2的最小邊界矩形是否接觸。 MBRWithin(g1,g2) 返回1或0以指明g1的最小邊界矩形是否位於g2的最小邊界矩形內。 Contains(g1,g2) 返回1或0以指明g1是否完全包含g2。 Crosses(g1,g2) 如果g1在空間上與g2相交,返回1。如果g1為Polygon或MultiPolygon,返回NULL,或如果g2為Point或MultiPoint返回NULL。否則,返回0。 術語“空間上交叉”指的是2個給定幾何對象之間的空間關系,它具有下述屬性: o 2個結合對象交叉。 o 其交叉結果將導致其維數小於兩個給定幾何對象最大維數的幾何對象。 o 其交叉不等於兩個幾何對象中的任何1個。 Disjoint(g1,g2) 返回1或0以指明g1是否與g2從空間上不相交。 Distance(g1,g2) 以雙精度數值形式返回2個幾何對象中2點間的最短距離。 Equals(g1,g2) 返回1或0以指明g1是否從空間上等同於g2。 Intersects(g1,g2) 返回1或0以指明g1是否從空間上與g2相交。 Overlaps(g1,g2) 返回1或0以指明g1是否從空間上與g2交迭。如果2個幾何對象交叉而且其交叉將導致具有相同維數但並不等同於任一幾何對象的幾何對象,將使用術語“空間交迭”。 Related(g1,g2,pattern_matrix) 返回1或0以指明由pattern_matrix指定的空間關系是否在g1和g2間存在。如果參量為NULL返回-1。模式矩形為字符串。如果實施了該函數,其規范將在此給出。 Touches(g1,g2) 返回1或0以指明g1是否從空間上與g2接觸。如果幾何對象的內部不交叉,但1個幾何對象的邊界與另一個的邊界或內部交叉,這兩個幾何對象是從空間上接觸的。 Within(g1,g2) 返回1或0以指明g1是否從空間上位於g2內。