Oracle Spatial, вычисления вдоль длинного линейного

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
TimV
Участник
Сообщения: 56
Зарегистрирован: 15 май 2013, 12:41
Репутация: 1

Oracle Spatial, вычисления вдоль длинного линейного

Сообщение TimV »

Подскажите, пожалуйста как увеличить скорость вычислений вдоль длинного линейного объекта.
Грубо говоря есть дорога 1000 км и нужно найти населенные пункты на заданном расстоянии от неё.
Сейчас строю буфер вокруг дорого(sdo_buffer) и с помощью SDO_WITHIN_DISTANCE ищу НП на нулевой дистанции.
Работает очень медленно.
trir
Гуру
Сообщения: 5354
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Oracle Spatial, вычисления вдоль длинного линейного

Сообщение trir »

построить граф
TimV
Участник
Сообщения: 56
Зарегистрирован: 15 май 2013, 12:41
Репутация: 1

Re: Oracle Spatial, вычисления вдоль длинного линейного

Сообщение TimV »

Заменил SDO_WITHIN_DISTANCE на SDO_ANYINTERACT, получилось гораздо шустрее.
По Oracle Spatial мало инфы на русском. Есть на английском одна хорошая, сижу вкуриваю её.
Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: Oracle Spatial, вычисления вдоль длинного линейного

Сообщение SergeyRyzhkov »

Естественно шустрее :) , логика то операторов совершенно разная и как следствие математика у SDO_WITHIN_DISTANCE намного сложнее.

Еще в таких случаях желательно приводить запрос целиком, писать про наличие индексов и т.д.

http://docs.oracle.com/cd/B28359_01/app ... #SPATL1023
TimV
Участник
Сообщения: 56
Зарегистрирован: 15 май 2013, 12:41
Репутация: 1

Re: Oracle Spatial, вычисления вдоль длинного линейного

Сообщение TimV »

Подскажите ещё, пожалуйста.
Какую функцию(процедуру) использовать чтобы найти ближайший площадной объект от точки.
SDO_NN, как я понял, ищет ближайшую точку на площадных объектах.
Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: Oracle Spatial, вычисления вдоль длинного линейного

Сообщение SergeyRyzhkov »

Не совсем понял :(

SDO_NN находит ближайшие объекты к заданной,
Например,находим все объекты ближайшие к точке (создаем сами геометрию sdo_geometry(...)

Код: Выделить всё

SDO_NN(c.shape,  sdo_geometry(2001, NULL, sdo_point_type(10,7,NULL), NULL,  NULL),
      ‘sdo_num_res=2′, 1)
Далее делаем запрос, в котором выводим расстояния от точки до объектов

Код: Выделить всё

SELECT   c.mkt_id, c.name, SDO_NN_DISTANCE(1) dist
   FROM cola_markets c 
   WHERE SDO_NN(c.shape,  sdo_geometry(2001, NULL,
      sdo_point_type(10,7,NULL), NULL,  NULL),
      ‘sdo_num_res=2′, 1) = ‘TRUE’ ORDER BY dist;
Свои запросы не стал приводить - они слишком сложные, брал пример с:
Источник: http://www.oraclegis.com/blog/?p=2622

Еще небольшой, но важный тюнинг можно посмотреть
https://blogs.oracle.com/oraclespatial/ ... ing_sdo_nn
Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: Oracle Spatial, вычисления вдоль длинного линейного

Сообщение SergeyRyzhkov »

Еще для ораклистов, советую стадибук (по спешл) в аттаче.
Старенькая, но толковая.
Вложения
D56709GC10_sg1.pdf
(3.26 МБ) 960 скачиваний
TimV
Участник
Сообщения: 56
Зарегистрирован: 15 май 2013, 12:41
Репутация: 1

Re: Oracle Spatial, вычисления вдоль длинного линейного

Сообщение TimV »

Благодарю за разъяснения и за бук!
Ответить

Вернуться в «Общий - ПО»

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

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