arcgis中definition query是干嘛的


想知道他的作用是什么
属性中的define query可以通过sql语句只亏凳判显示你需要的数据,这样既可以屏蔽掉不需要销改显示的数据,也避免了对无关数据进行编辑的问题,这样的做的好处还有对一些情况不必将数据总是粗唤导出。
可以利用SQL向已经存在的Feature Class中填加记录,或者是利用SQL创建自定义的查询以显示某条记录,或者是利用SQL创建一个具备Spatial Type列的新裤樱表,然后Register这个表以在ArcGIS中使用。
(1)如果利用SQL向已有的Feature Class添加新的记录:
首先在ArcCatalog中新建一个要素图层,如果数据库是Oracle,则创建的时候应该在Use Configuration Keyword中将空间列的类型设置为ST_GEOMETRY,然后将数据添加 到ArcMap中,然后利用SQL添加一行记录:
insert into buildings(OBJECTID, FID, BUILDING_, BUILDING_I, TAG, TYPE, SUBTYPE, SYMBOL, LOCK__ID, PHASE__ID, ZOOM_SYMBO, SHAPE) Values (1, 0, 12972, 18907, '22JSM0000023946', 'BLD', 'RES', 6, 0, 0, 1, ST_GEOMETRY ('POLYGON (( 2219520.56768649 387051.66985716, 2219525.34823696 387079.52399077,2219536.03133855 387077.71905252, 2219539.05578917 387095.47546386, 2219528.17754562 387097.32910505,2219528.61661291 387099.81695550, 2219489.00622816 387106.54876471, 2219480.81097279 387058.40167483, 2219520.56768649 387051.66985716))', 3));
(2)利用SQL创建的自定义查询表达式以查询要素:首先将要素添加到ArcMap中,右键单击图层,选择Properties/Definition Query 面板,创建以下SQL查询语句:
objectid in (select p.objectid FROM buildings b, water_lines w where watertype = 'MAIN' and ST_Overlaps (p.shape, ST_Buffer (f.shape, 55)) = 1)
(3)ESRI推荐使用ArcGIS创建Feature Class,这样能够保证数据的完整性,但是也支持将SQL创建的Feature Class或者第三方应用创建的悔纯败Feature Class注册为ArcGIS识别的类型。
可以利用ArcSDE Administrator Command:sdelayer –o register,手动实现将Table注册为Feature Class,以下为将SQL创建的Table,用ArcSDE注册为Feature Class,以下为例子:
首先在SQL中创建一个Table:
create table comm._bldgs as select * from buildings where SUBTYPE = 'COM';
然后利用ArcSDE进行注册:
sdelayer -o register -l comm_bldgs,shape -e a -C OBJECTID,SDE -R -u -p
需要注意的是:需要Register的Table必须满足以下条件:
(1)注册该表的用户必须是该表的所有者;
(2)必须具备单一的ST_GEOMETRY列;
(3)不包括其它User-defined类型;
(4)具备单一的几何类型(Points,Lines,Polygons);
(5)必须具备ID列,该列必须是Integer,Unique,NonNull;
(6)应该具备Spatial Index。
如果以上注册的Feature Class将参与到Relationship、Geometric Networks、Topology、Subtypes、Default Types、Domains、Validation Rules,则碧颤需要Registered with the Geodatabase:在ArcCatalog中右键单击要注册的Feature Class或者Table,选择Register With Geodatabase。