使用Arcgis時,在sde空間庫經常使用的相關函數

一.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字段處理,需掌握大量的函數;

相關文章
相關標籤/搜索