Страница 1 из 1

Re: Булево поле как атрибут слоя.

Добавлено: 08 окт 2013, 23:21
HasT
Установки - Параметры - Оцифровка - снять флажок "Отключить всплывающее окно ввода атрибутов для каждого создаваемого объекта"

Re: Булево поле как атрибут слоя.

Добавлено: 09 окт 2013, 03:12
bolotoved
Настоящее булево поле далеко не в каждом формате данных можно создать, например шейп такой тип не поддерживает, но его там можно имитировать, задав тип поля "integer", а для ввода в указанном вами меню "элементов редактирования" выбрать "флажок" (рис 1).
Теперь в режиме редактирования в атрибутивной таблице в этом поле будут по прежнему отображаться 1 и 0, но при двойном щелчке мышью по полю в которое необходимо внести изменение, будет отображаться флажок. Соответственно, его можно снимать и ставить (рис 2.2). Полагаю, что проверку результатов работы и расставление галочек лучше ведь делать в атрибутивной таблице, а не в форме отдельного объекта? Но если нужно увидеть форму, то из таблицы атрибутов к ней легко перейти используя кнопку (рис. 2.3).

Re: Булево поле как атрибут слоя.

Добавлено: 09 окт 2013, 22:49
HasT
"Однако данное поле не самозаполняется, с чего бы? Что то сделал не так?
Насчет записи редактора файла в поле таблицы, я правильно понимаю что это реализуется через постгис??" - сделать можно через PostGIS, как сделать - http://habrahabr.ru/post/137161/ и http://workshops.boundlessgeo.com/postg ... cking.html

Re: Булево поле как атрибут слоя.

Добавлено: 10 окт 2013, 11:24
HasT
да, когда было необходимо сделать "запись истории" по первому методу не получилось, сделал по примеру второй ссылки.

Re: Булево поле как атрибут слоя.

Добавлено: 13 окт 2013, 17:43
HasT
Nariman писал(а):Скажите пожалуйста средствами связки postgis+postgresql получится в исходную таблицу автоматически добавлять дату и редактора? опять на тригерах?
триггер на запись session_user/inet_client_addr()/current_timestamp в 'рабочую' таблицу:

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

/*
ALTER TABLE point ADD COLUMN username CHAR(12);
ALTER TABLE point ADD COLUMN address CHAR(12);
ALTER TABLE point ADD COLUMN time TIMESTAMP WITHOUT TIME ZONE;
*/

--DROP TRIGGER point_insert_update_trigger ON point;
--DROP FUNCTION point_insert_update();

CREATE OR REPLACE FUNCTION point_insert_update()
RETURNS trigger AS
$BODY$
BEGIN
NEW.username:=session_user;    
NEW.address:=inet_client_addr(); 
NEW.time:=current_timestamp; 
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql;

CREATE TRIGGER point_insert_update_trigger
BEFORE INSERT OR UPDATE
ON point
FOR EACH ROW
EXECUTE PROCEDURE point_insert_update();