一.Oracle庫中配置好sde空間庫常見的場景java
1.在sde庫中建立表:community函數
建立表:community
字段:id(INTEGER), shape(ST_GEOMETRY)
2.往sde庫中添加資源類型:spa
1.1點資源:code
1 方式一: 2 insert into 表名(id,shape) values(1,sde.st_point(108.88,34.18,#srid值#)); 3 //例如:insert into community(id,shape) values(1,sde.st_point(108.88,34.18,2)); 4 方式二: insert into 表名(id,shape) values(2,sde.st_geometry('point(108.88 34.19)',#srid值#)); 5 //例如:insert into community(id,shape) values(2,sde.st_geometry('point(108.88 34.19)',2));
注意點:1.方式一,其中st_point()函數爲點資源函數,參數爲座標及座標系(即:srid值);2.方式二,st_geometry()函數傳入點座標及座標系;blog
1.2線資源:資源
1 insert into 表名(id,shape) values(1,sde.ST_LineString('linestring(108.88 34.19,108.98 34.29)',#srid值#)); 2 //例如:insert into community (id,shape) values(1,sde.ST_LineString('linestring(108.88 34.19,108.98 34.29)',2));
注意點:1.線資源使用ST_LineString()函數,傳入多個點(至少兩個不一樣點)及座標系;2.線資源的點使用linestring()處理;string
1.3面資源:it
1 insert into 表名(id,shape) values(1,sde.st_geometry ('polygon (108.88 34.19,108.98 34.29,108.88 34.19)',#srid值#)); 2 //例如:insert into community(id,shape) values(1,sde.st_geometry ('polygon (108.88 34.19,108.98 34.29,108.88 34.19)',2));
注意點:1.面資源使用st_geometry()函數,傳入多個點(至少三個不一樣點,必須按照必定的方向首位相接,連起來不能相交)和座標系;2.面資源的點使用polygon()處理;ast
4.sde庫中表srid值的查看:class
SELECT SRID FROM SDE.ST_GEOMETRY_COLUMNS WHERE TABLE_NAME = '#表名#';
注意點:ST_GEOMETRY_COLUMNS 爲sde庫的一張表,將sde庫中的其餘表的信息及srid進行保存
5.修改sde庫表的srid值
1 update #表名# set shape = st_geomfromtext(ST_AsText(shape),#新的srid值#); 2 //例如:update community set shape = st_geomfromtext(ST_AsText(shape),2);
注意點:shape:該表中st_geometry類型的字段,使用st_geomfromtext()函數將文本類型的點進行轉換;
5.sde庫中判斷點資源是否在一個面資源內:(SDE.ST_INTERSECTS()函數)
1 SELECT SDE.ST_INTERSECTS(R.SHAPE,SDE.ST_POINT(108.88, 34.19,#srid值#))FROM community R where id= '#id#' 2 //例如:SELECT SDE.ST_INTERSECTS(R.SHAPE,SDE.ST_POINT(108.88, 34.19,2))FROM community R where id= '1'
注意點:ST_INTERSECTS()函數返回結果爲1:表示該點(108.88, 34.19)在面(shape)內;結果爲0:表示該點再也不面內;
6.查看字段shape中的點信息:
1.查看shape面中的任意一點:
SELECT id,sde.st_astext (sde.st_pointonsurface (shape)) as Surface_Points FROM sde.表名 g where id='1';
注意點:st_pointonsurface()函數從shape字段中獲取點,在經過st_astext()轉爲文本類型clob類型,點擊clob可查看具體的點信息,文本內容:point(108.88 34.19);
2.查看shape面中的點資源,線資源,面資源的點:
SELECT id,sde.st_astext(shape) POINTS FROM sde.表名 WHERE id= '1'
注意點:點擊clob類型的POINTS字段值,以下:
若是是點,則顯示:point(108.88 34.19);
若是是線,則顯示:linestring(108.88 34.19,108.98 34.29);
若是是面,則顯示:polygon (108.88 34.19,108.98 34.29,108.88 34.19)
二.總結
優點:
sde庫中的字段簡單,一個shape字段,包含的信息量多;
缺點:
對shape字段處理,需掌握大量的函數;