在利用GIS软件(如MapObjects)做行业应用时,经常会按图幅,街区进行调图。实现此功能的方法很多,如果考虑效率,复杂度以及ArcSDE等问题时,通常采用MO的FilterShape ,FilterOrder属性就可以实现。这种方法比较简单,灵活,而且效率特别高。
Rect:=mMap.TrackRectangle;
count:=mMap.Layers.Count;
for i:=0 to count-1 do
begin
mLayer:=IMoMapLayer(mMap.Layers.Item(i));
if Rect<>nil then
mLayer.FilterShape:=Rect;
mLayer.FilterOperator:=9;
end;
mMap.Refresh;
另外,不知什么原因,在VB中可以对mLayer.FilterExpression的值使用中文生成查询语句,而在Delphi中却无法实现。