GIS-LAB

Географические информационные системы и дистанционное зондирование


Форумы GIS-Lab.info

Геоинформационные системы (ГИС) и Дистанционное зондирование Земли


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

Обсуждение материалов сайта: вопросы, замечания, предложения

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

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

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

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

updates-bot
Bot
 
Зарегистрирован: 04 фев 2008
 
Сообщения: 276
Репутация: 2

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

Сообщение Komяpa » 29 дек 2010, 22: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-ить кучу кода :)
  • 0

[OSM BY Team]
[http://latlon.org/] [jabber: me@komzpa.net] [mobile: +375257407159]
Аватара пользователя
Komяpa
Интересующийся
 
Зарегистрирован: 13 сен 2009
Откуда: Minsk (на карте)
 
Сообщения: 16
Репутация: 0

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

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

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

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

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

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

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

В мапнике, к сожалению, нет возможности создать функции перед рендерингом и убить сразу после. Поэтому приходится генерировать десятиэтажные конструкции с повторениями, вместо того, что можно было бы оформить как функции.
Создавать функции в базе заранее не хочу - переносимость стиля пострадает :)
  • 0

[OSM BY Team]
[http://latlon.org/] [jabber: me@komzpa.net] [mobile: +375257407159]
Аватара пользователя
Komяpa
Интересующийся
 
Зарегистрирован: 13 сен 2009
Откуда: Minsk (на карте)
 
Сообщения: 16
Репутация: 0

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

Сообщение Mavka » 27 апр 2011, 12: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' - экспортируемая функция.
  • 0

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


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

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

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


(Геокруг)

© GIS-Lab и авторы, 2002-2013. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов (подробнее).