
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
01.12.2014, 22:36:34
|
|||
|---|---|---|---|
|
|||
функция для postgis/postgresql |
|||
|
#18+
добрый день уважаемые форумчане. Вопрос такой, я не особо сведущ в построений функций. SQL нормально тяну, а вот с функциями беда просто. Есть входная переменная - геометрия объекта. есть две таблицы буквально, не осложняя понимание: t1 (id,geom,info1,info2,info3,uniq_id) t2 (id, geom,uniq_id) смысл в том, что создать такую функцию, которая будет понимать входную переменную (динамическую, т.е. она будет меняться) - в данном случае на кликании мышкой получаем геометрию t2.geom. затем необходимо найти пересечение с t1 (полигон более меньшего размера) - с этим запросом проблем нет. делается для получения информации по объекту из таблицы t1 в таблицу t2. Т.е. t2 наследует данные от t1 по пересечению объектов. SELECT t2.uniq_id,t2.geom FROM t1,t2 WHERE public.st_intersects(t1.geom, t2.geom) Затем - получаем info1,info2,info3 для t2 в одну ячейку кортежа. Итак, возможно продублирую для адекватного объяснения. Eсть две таблицы t1 и t2 Необходимо получить информацию по объекту в таблице t2, через пересекающего его объекта из t1, при условии, что объект в таблице t2 все время может меняться. Понимаю, что задача не простая, но если есть хотя бы лоскуты для этой функции буду крайне признателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2014, 11:01:55
|
|||
|---|---|---|---|
функция для postgis/postgresql |
|||
|
#18+
Trippalдобрый день уважаемые форумчане. Код: sql 1. 2. 3. Если у вас есть геометрия (как тип), то можно просто добавить значение в запрос как дополнительный предикат. Также можно формировать геометрию из строки (если необходимо) через `ST_GeomFromText` . Вот так: Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2014, 13:54:27
|
|||
|---|---|---|---|
|
|||
функция для postgis/postgresql |
|||
|
#18+
о, спасибо, есть даже дополнение, буферная зоны точки клика в пересечении с t1, а затем c t2. Но вот как это в функцию запихать, не понимаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2014, 15:46:28
|
|||
|---|---|---|---|
функция для postgis/postgresql |
|||
|
#18+
Trippal, Используйте функцию `ST_Buffer()` вокруг геометрий перед передачей их `ST_Intersects`. Хотя, если вас интересует только факт нахождения в определенном отдалении, то используйте `ST_Dwithin(t1.geom, t2.geom, 125)` . Если расстояние постоянно, то можно сделать функциональный GIST индекс по `ST_Expand(t1.geom, 125)` . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2014, 16:01:50
|
|||
|---|---|---|---|
|
|||
функция для postgis/postgresql |
|||
|
#18+
vyegorov, спасибо, это я и сделал, проблема в написании самой функции) но все равно премного благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2014, 17:33:15
|
|||
|---|---|---|---|
функция для postgis/postgresql |
|||
|
#18+
Trippal, Я рекомендую использовать PL/SQL для таких функций, т.к. функции на SQL-е прозрачны для планировщика и хорошо оптимизируются. Будем работать с SRF , т.е. функцию надо использовать во `FROM` части запроса. Код: sql 1. 2. 3. 4. 5. 6. Вызываем так: Код: sql 1. Возможно натыкал ошибок, проверяем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2014, 22:24:56
|
|||
|---|---|---|---|
|
|||
функция для postgis/postgresql |
|||
|
#18+
vyegorovTrippal, Я рекомендую использовать PL/SQL для таких функций, т.к. функции на SQL-е прозрачны для планировщика и хорошо оптимизируются. Будем работать с SRF , т.е. функцию надо использовать во `FROM` части запроса. Код: sql 1. 2. 3. 4. 5. 6. Вызываем так: Код: sql 1. Возможно натыкал ошибок, проверяем. Спасибо огромное, есть повод задуматься, Вы мне очень помогли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&tablet=1&tid=1998316]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 340ms |

| 0 / 0 |
