Mysql 空間資料庫學習

2021-08-27 21:37:00 字數 1495 閱讀 2588

建表:

create database geodatabase;

use geodatabase;

create table test(

id int primary key auto_increment,

name varchar(128) not null,

pnt point,

line linestring,

pgn polygon

)engine=myisam;

用以下sql插入一條空間資料

insert into `test` values(

null,

'a test string',

pointfromtext('point(15 20)'),

linestringfromtext('linestring(0 0, 10 10, 20 25, 50 60)'),

polygonfromtext('polygon((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))')

這個函式很有用:envelope

envelope(g)            

返回幾何值g的最小邊界矩形(mbr)。結果以polygon值的形式返回。

多邊形(polygon)是由邊界框的頂點定義的:

polygon((minx miny, maxx miny, maxx maxy, minx maxy, minx miny))

mysql> select astext(envelope(geomfromtext('linestring(1 1,2 2)')));

| astext(envelope(geomfromtext('linestring(1 1,2 2)'))) |

| polygon((1 1,2 1,2 2,1 2,1 1))                        |

或者多個點麵集合:

select astext( envelope( geomfromtext('geometrycollection(point(10 2),point(9 9),linestring(2 2, 3 30),linestring(200 200, 3 30),polygon((400 300,10 0,10 10,0 10,400 300)),point(100 100))' ) ) ) ;

用以下sql從資料表中獲得空間資料

select id,name,astext(pnt),astext(line),astext(pgn) from `test`;

現在我需要的功能是查詢一輛車在某一段時間內是否在一段區域內經過,用點來說明的話,就是乙個空間座標點在乙個特定時間段內是否包含在乙個特定的矩形區域內。下面這個函式應該能達到這個功能:

mbrwithin(g1,g2) 

select astext(pnt) from `gis` where mbrwithin(pnt,geomfromtext('polygon(1 1,0 30,30 30,30 0,1 )'))

空間資料庫

引用 空間資料庫指的是地理資訊系統在計算機物理儲存介質上儲存的與應用相關的地理空間資料的總和,一般是以一系列特定結構的檔案的形式組織在儲存介質之上的。空間資料庫的研究始於20 世紀 70年代的地圖製圖與遙感影象處理領域,其目的是為了有效地利用衛星遙感資源迅速繪製出各種經濟專題地圖。由於傳統的關聯式資...

地理空間資料庫

地理空間資料庫 課程介紹地理空間資料庫的空間資料型別 空間分析操作和空間索引,幫助學生理解ogc的簡單要素訪問規範 空間資料庫的基本概念和基本設計方法,通過幾何物件模型和空間網路模型在postgresql postgis pgrouting上的應用實踐,掌握地理資訊資料建庫 空間關聯分析 最短路徑查...

空間資料庫學習筆記 三 空間資料操作

根據空間資料的兩種資料型別 st fromtext的形式 2 使用熟知二進位制輸入wkb well known binary 構造例項 st fromwkb的形式 3 使用 gml 幾何物件的 xml 表示形式 文字輸入構造例項 geomfromgml 返回值 1 返回幾何圖形例項的 wkt 表示形...