Создание и использование пользовательских функций в PostGIS

Обсуждение материалов сайта: вопросы, замечания, предложения
Ответить
updates-bot
Bot
Сообщения: 276
Зарегистрирован: 03 фев 2008, 23:13
Репутация: 3

Создание и использование пользовательских функций в PostGIS

Сообщение updates-bot » 29 дек 2010, 20:58

Обсуждение статьи "Создание и использование пользовательских функций в PostGIS"

http://gis-lab.info/qa/pl-pgsql.html

Аватара пользователя
Komяpa
Интересующийся
Сообщения: 16
Зарегистрирован: 13 сен 2009, 11:24
Репутация: 0
Откуда: Minsk
Контактная информация:

Re: Создание и использование пользовательских функций в Post

Сообщение Komяpa » 29 дек 2010, 21:35

Статья неплохая. Парочка подумавшихся замечаний:
1. на второй картинке все точки подписаны, как ret :)
2. на больших объёмах лучше так не злоупотреблять MakeLine / MakeBox2D. В текущей нотации постгису сначала придётся создать две точки, потом для них создавать Box2D.. Проще тогда сразу скормить четыре координаты в ST_MakeEnvelope, или что-то наподобие любимого мапником SetSRID('BOX3D(a b, c d)'::box3d,94326);
3. если для рендеринга валидость коллекций не важна, то ST_Union стоит попробовать поменять на ST_Collect. Зачастую даже ST_Buffer(ST_Collect(...),0) отрабатывает быстрее, чем ST_Union напрямую;
4. Вместо извращённой проверки с кучей ветвлений и ST_X, возможно, стоило использовать встроенный http://www.postgis.org/documentation/ma ... itude.html

Жалко, что временные функции нельзя создавать отдельно для мапниковских стилей внутри самих стилей - из-за этого приходится inline-ить кучу кода :)
[OSM BY Team]
[http://latlon.org/] [jabber: me@komzpa.net] [mobile: +375257407159]

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Статьи: 11
Проекты: 2/1
Репутация: 9

Re: Создание и использование пользовательских функций в Post

Сообщение Mavka » 30 дек 2010, 10:23

Картинку исправил (в статье sim обновит позже). Функции менять не стал, для примера сойдет.
Я боялся что и так будет будет непонятно и много вопросов. Хотя замечания дельные.

P.S. Не часто вас встретишь на форуме :)
Что значите "inline-ить кучу кода"? (В таком контексте ни разу не встречал.)
лангольеры под окном жрали время ом-ном-ном

Аватара пользователя
Komяpa
Интересующийся
Сообщения: 16
Зарегистрирован: 13 сен 2009, 11:24
Репутация: 0
Откуда: Minsk
Контактная информация:

Re: Создание и использование пользовательских функций в Post

Сообщение Komяpa » 30 дек 2010, 10:28

В мапнике, к сожалению, нет возможности создать функции перед рендерингом и убить сразу после. Поэтому приходится генерировать десятиэтажные конструкции с повторениями, вместо того, что можно было бы оформить как функции.
Создавать функции в базе заранее не хочу - переносимость стиля пострадает :)
[OSM BY Team]
[http://latlon.org/] [jabber: me@komzpa.net] [mobile: +375257407159]

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Статьи: 11
Проекты: 2/1
Репутация: 9

Re: Создание и использование пользовательских функций в Post

Сообщение Mavka » 27 апр 2011, 11:54

Нужно будет добавить в статью очень хороший пример пользовательских функций - надстройки для работы с геоданными: JASPA - написана на PL/Java; PostGIS использует вызовы из внешней библиотеки, написанной на языке C. Например:

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

CREATE OR REPLACE FUNCTION boundary(geometry)
RETURNS geometry AS
'$libdir/postgis-1.4', 'boundary'
LANGUAGE 'c' IMMUTABLE STRICT
COST 1;
ALTER FUNCTION boundary(geometry) OWNER TO postgres;

где 'postgis-1.4' - имя файл-библиотеки (в Windows - postgis-1.4.dll), а 'boundary' - экспортируемая функция.
лангольеры под окном жрали время ом-ном-ном

Ответить

Вернуться в «Материалы сайта»