Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Баландин Денис

Зарегистрирован: 15.08.2006 Сообщения: 44 Откуда: Екатеринбург
|
Добавлено: Ср 23 Сен 2009 10:37 Заголовок сообщения: Быстрая очистка слоя |
|
|
Добрый день, помогите...
хотел программно реализовать очистку слоев, но перебор и удаление объектов происходит уж больно медленно, в то время как из проводника БД, очистка слоев работает быстро...
код следующий:
Код: |
function TIngeoMapService.DeleteObjByLayer(aLayerID: WideString): Integer;
var
aCounter: Integer;
aMapObjects: IIngeoMapObjects;
aMapObjectsQuery: IIngeoMapObjectsQuery;
anObjectID: WideString;
aShapeIndex: Integer;
begin
aMapObjects:=IngeoApp.ActiveDb.MapObjects;
aMapObjectsQuery:=aMapObjects.QueryByLayers(aLayerID);
aCounter:=0;
while Not aMapObjectsQuery.EOF do begin
aMapObjectsQuery.Fetch(aLayerID, anObjectID, aShapeIndex);
aMapObjects.DeleteObject(anObjectID);
inc(aCounter);
end;
aMapObjects.UpdateChanges;
result:=aCounter;
end;
|
|
|
Вернуться к началу |
|
 |
andreichernov
Зарегистрирован: 14.02.2005 Сообщения: 209 Откуда: Самара
|
Добавлено: Ср 23 Сен 2009 11:13 Заголовок сообщения: |
|
|
Раньше в проводнике тоже долго работало.
Рустам говорил, что из-за топосвязей.
Потом очистку слоя они как-то оптимизировали, но, видимо, используются внутренние функции Ингео.
Попробуйте, насколько ускоряется процесс, если у слоя убрать топосвязи со всеми другими слоями.
Если дело в этом, то можно попытаться запомнить вид топосвязей, а после удаления всех объектов слоя их восстанавливать. |
|
Вернуться к началу |
|
 |
Баландин Денис

Зарегистрирован: 15.08.2006 Сообщения: 44 Откуда: Екатеринбург
|
Добавлено: Ср 23 Сен 2009 11:50 Заголовок сообщения: |
|
|
Топосвязей нет, объекты тоже простые, из одной формы, одного контура |
|
Вернуться к началу |
|
 |
andreichernov
Зарегистрирован: 14.02.2005 Сообщения: 209 Откуда: Самара
|
Добавлено: Ср 23 Сен 2009 12:09 Заголовок сообщения: |
|
|
Уточните - топосвязей нет у объектов или у слоя не стоит никаких отношений с другими слоями.
Если у слоя все-таки выставлены какие-то, то все равно по каждому объекту будут искаться топосвязи в таблице ingeo_links (хоть их и нету)
На это уходит много времени. |
|
Вернуться к началу |
|
 |
Баландин Денис

Зарегистрирован: 15.08.2006 Сообщения: 44 Откуда: Екатеринбург
|
Добавлено: Ср 23 Сен 2009 15:11 Заголовок сообщения: |
|
|
Топосвязей нет у слоя вообще, хотя надо будет сравнить как они повлияют на вышеприведенный код |
|
Вернуться к началу |
|
 |
Алексей В. Бастриков
Зарегистрирован: 02.06.2008 Сообщения: 118 Откуда: ООО "Инфопроект", г. Екатеринбург
|
Добавлено: Ср 23 Сен 2009 16:59 Заголовок сообщения: |
|
|
Думается мне, что задачу можно решить SQL-запросом к БД ИнГЕО на удаление данных, учесть при этом все таблицы, связанные с INGEO_LAYERS.  |
|
Вернуться к началу |
|
 |
BarakudaX777

Зарегистрирован: 07.07.2014 Сообщения: 26 Откуда: ООО "ГЕОГРАД" г. Орск
|
Добавлено: Пн 01 Сен 2014 17:17 Заголовок сообщения: |
|
|
Вопрос так и не решен? Кто чего добился? |
|
Вернуться к началу |
|
 |
|