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

start [/forum/topic.php?fid=53&fpage=119&tid=1998316]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 361ms |

| 0 / 0 |
