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

Зарегистрирован: 11.07.2006 Сообщения: 77 Откуда: Сочи
|
Добавлено: Пн 18 Сен 2006 14:36 Заголовок сообщения: Запрос по пространственным объектам |
|
|
Зравствуйте, уважаемые разработчики.
У меня вопрос в первую очередь к Михаилу Власову.
Есть ли в ИнГЕО API функция позволяющая отобрать объекты определенного слоя лежащие в пределах прямоугольной области (Bounds) или объекты, которые пересекаются с заданным объектом?
Задача: Выбрать из всех видимых слоёв те объекты, которые пересекаются с выделенным объектом.
Моё решение (не рациональное): Проверять все объекты каждого видимого слоя на нахождение в пределах Bounds выделенного объекта. Когда в видимых слоях около 40-60 тыс объектов, то такая проверка происходит в течение 5-7 минут (из-за того, что кол-во итераций равно суммарному кол-ву объектов)...
Требуется многократное увеличение скорости выдачи результата... А этого можно достичь уменьшением количества итераций. _________________ Нет ни чего сложнее, чем достигнуть простоты. |
|
Вернуться к началу |
|
 |
Михаил Власов

Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
|
Добавлено: Пн 18 Сен 2006 15:18 Заголовок сообщения: |
|
|
Выбор по прямоугольнику:
Метод IIngeoMapObjects.QueryByRect.
Выбор по объекту:
Метод IIngeoMapObjects.QueryByObject. _________________ С уважением, Михаил Власов. |
|
Вернуться к началу |
|
 |
Tulon

Зарегистрирован: 11.07.2006 Сообщения: 77 Откуда: Сочи
|
Добавлено: Пн 25 Сен 2006 19:19 Заголовок сообщения: |
|
|
Большое спасибо, Михаил!
Вы помогли очень сильно ускорить процесс создания отчета!  _________________ Нет ни чего сложнее, чем достигнуть простоты. |
|
Вернуться к началу |
|
 |
Tulon

Зарегистрирован: 11.07.2006 Сообщения: 77 Откуда: Сочи
|
Добавлено: Ср 27 Сен 2006 00:09 Заголовок сообщения: |
|
|
Попутно тогда разрешите еще один вопрос...
Кроме ниже указанного метода, как можно узнать количество записей в результате запроса?
var
___MyQuery: IIngeoMapObjectsQuery;
___QueryCount: cardinal;
begin
___...
___QueryCount:= 0;
___while not MyQuery.EOF do
___begin
______Inc(QueryCount);
______MyQuery.MoveNext;
___end;
___ShowMessage('Кол-во отобранных объектов: '+IntToStr(QueryCount));
end;
P.S. Извините, не знал, как для удобочитаемости вставить отступы... Пришлось тыкать прочерки. _________________ Нет ни чего сложнее, чем достигнуть простоты. |
|
Вернуться к началу |
|
 |
Михаил Власов

Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
|
Добавлено: Вт 10 Окт 2006 09:55 Заголовок сообщения: |
|
|
Количество объектов в результате пространственного запроса можно узнать только тем способом, который Вы привели. _________________ С уважением, Михаил Власов. |
|
Вернуться к началу |
|
 |
|