Программистам, использующим COM сервер ArcGIS

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
DmitryOrlov

Программистам, использующим COM сервер ArcGIS

Сообщение DmitryOrlov » 22 сен 2005, 11:18

Мне нужно узнать центр IFeature, для этого я пытаюсь взять ее Extent. В нижеприведенном коде все нормально до момента, как я пытаюсь прочитать Extent. Т.е. aFeature находится, я проверял, но ни одно свойство она не возвращает (т.е. nil). Какой есть выход?

Более глобально, мне нужно отцентрировать карту оносительно центра найденной фигуры.

Поделитесь мыслями, плизз!

var
aLayer: ILayer;
aFeatureLayer: IFeatureLayer;
aFeatureClass: IFeatureClass;
aFeatureCursor: IFeatureCursor;
aQueryFilter: IQueryFilter;
anExtent: IEnvelope;
aFeature: IFeature;
x1, x2, y1, y2: double;
aPoint: IPoint;
s: widestring;
aShape: IGeometry;

begin
MapControl1.Map.Get_Layer(0, aLayer);
aFeatureLayer:=aLayer as IFeatureLayer;

aQueryFilter:=CoQueryFilter.Create as IQueryFilter;
aQueryFilter.Set_WhereClause('ID = '+Edit1.Text);

if aFeatureLayer.Search(aQueryFilter, false, aFeatureCursor) = S_OK
then begin
aFeatureCursor.NextFeature(aFeature);
aFeature.Get_ShapeCopy(aShape);
aFeature.Get_Extent(anExtent);
anExtent.Get_XMin(x1);
anExtent.Get_XMax(x2);
anExtent.Get_YMin(y1);
anExtent.Get_YMax(y2);

aPoint:=CoPoint.Create as IPoint;
aPoint.PutCoords(x1+(x2-x1)/2, y1+(y2-y1)/2);

MapControl1.CenterAt(aPoint);
end else
ShowMessage('Not Found!');
end;

Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя