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

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

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

Сообщение TimV » 06 май 2015, 09:31

Подскажите, пожалуйста как увеличить скорость вычислений вдоль длинного линейного объекта.
Грубо говоря есть дорога 1000 км и нужно найти населенные пункты на заданном расстоянии от неё.
Сейчас строю буфер вокруг дорого(sdo_buffer) и с помощью SDO_WITHIN_DISTANCE ищу НП на нулевой дистанции.
Работает очень медленно.

trir
Гуру
Сообщения: 5292
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

Сообщение trir » 06 май 2015, 09:52

построить граф

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

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

Сообщение TimV » 06 май 2015, 09:57

Заменил SDO_WITHIN_DISTANCE на SDO_ANYINTERACT, получилось гораздо шустрее.
По Oracle Spatial мало инфы на русском. Есть на английском одна хорошая, сижу вкуриваю её.

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

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

Сообщение SergeyRyzhkov » 06 май 2015, 10:06

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

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

http://docs.oracle.com/cd/B28359_01/app ... #SPATL1023

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

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

Сообщение TimV » 08 май 2015, 11:07

Подскажите ещё, пожалуйста.
Какую функцию(процедуру) использовать чтобы найти ближайший площадной объект от точки.
SDO_NN, как я понял, ищет ближайшую точку на площадных объектах.

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

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

Сообщение SergeyRyzhkov » 08 май 2015, 12:18

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

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 » 08 май 2015, 12:23

Еще для ораклистов, советую стадибук (по спешл) в аттаче.
Старенькая, но толковая.
Вложения
D56709GC10_sg1.pdf
(3.26 МБ) 849 скачиваний

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

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

Сообщение TimV » 08 май 2015, 12:33

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

Ответить

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

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

Сейчас этот форум просматривают: Bing [Bot] и 39 гостей