GIS-LAB

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


Форумы GIS-Lab.info

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


как изменить размер объекта на карте на python

Не знаете, где задать вопрос? Задавайте здесь.

как изменить размер объекта на карте на python

Сообщение lololol » 21 фев 2017, 08:36

Здравствуйте, не могу найти, как изменить размер и цвет объекта на слое (точки) с помощью питона.
Какой метод использовать для задания этого?
  • 0

lololol
Участник
 
Зарегистрирован: 12 фев 2016
 
Сообщения: 52
Репутация: 0

Re: как изменить размер объекта на карте на python

Сообщение doujin » 21 фев 2017, 11:15

А программное обеспечение, в котором вы слой настраиваете с помощью python, предлагается угадать?
  • 0

doujin
Активный участник
 
Зарегистрирован: 28 июн 2012
Откуда: Vladivostok (на карте)
 
Сообщения: 152
Репутация: 71

Re: как изменить размер объекта на карте на python

Сообщение lololol » 22 фев 2017, 00:59

пишу приложение с использованием библиотеки qgis.gui, qgis.core и PyQt4.
векторный слой - shp-файл, созданный в Qgis. Провайдер "ogr". Что еще необходимо?) Слой типа points
  • 0

lololol
Участник
 
Зарегистрирован: 12 фев 2016
 
Сообщения: 52
Репутация: 0

Re: как изменить размер объекта на карте на python

Сообщение lololol » 22 фев 2017, 01:00

doujin писал(а):А программное обеспечение, в котором вы слой настраиваете с помощью python, предлагается угадать?

пишу приложение с использованием библиотеки qgis.gui, qgis.core и PyQt4.
векторный слой - shp-файл, созданный в Qgis. Провайдер "ogr". Что еще необходимо?) Слой типа points
  • 0

lololol
Участник
 
Зарегистрирован: 12 фев 2016
 
Сообщения: 52
Репутация: 0

Re: как изменить размер объекта на карте на python

Сообщение doujin » 22 фев 2017, 01:47

А в документации смотрели? Или не это ищите? Appearance symbology of vector layer.
  • 0

doujin
Активный участник
 
Зарегистрирован: 28 июн 2012
Откуда: Vladivostok (на карте)
 
Сообщения: 152
Репутация: 71

Re: как изменить размер объекта на карте на python

Сообщение lololol » 04 мар 2017, 20:41

Благодарю, посмотрел.
Только не все понятно.
Там можно еще какие-то свои классы создавать изменения и создания элементов
Код: Выделить всё
class FooSymbolLayerWidget(QgsSymbolLayerV2Widget)
class FooSymbolLayerMetadata(QgsSymbolLayerV2AbstractMetadata)
class FooSymbolLayer(QgsMarkerSymbolLayerV2)

не совсем понял как они работают и что с ними можно делать. И смутило название)) Foo...
не могли бы пояснить что они делают?)

Мне надо будет менять цвет и размер точки на слое по её id, добавлять и удалять точки. Упростять тогда они мне жизнь или это для другого?
прошу прощения, что отвлекаю)
  • 0

lololol
Участник
 
Зарегистрирован: 12 фев 2016
 
Сообщения: 52
Репутация: 0

Re: как изменить размер объекта на карте на python

Сообщение lololol » 07 мар 2017, 20:33

И я не до конца понял как изменить цвет маркета и его размер.
Пробовал использовать
Код: Выделить всё
# You can alter a single property...
layer.rendererV2().symbol().symbolLayer(0).setName('square')
# ... but not all properties are accessible from methods,
# you can also replace the symbol completely:
props = layer.rendererV2().symbol().symbolLayer(0).properties()
props['color'] = 'yellow'
props['name'] = 'square'
layer.rendererV2().setSymbol(QgsMarkerSymbolV2.createSimple(props))

но тогда изменяются все точки на слое
Надо вводить разные маркеры на слое и если да, то как? не могли бы дать ссылочку именно на это?)
  • 0

lololol
Участник
 
Зарегистрирован: 12 фев 2016
 
Сообщения: 52
Репутация: 0

Re: как изменить размер объекта на карте на python

Сообщение freeExec » 09 мар 2017, 12:34

Так вы же меняете стиль, а если этим стилем отрисовываются все маркеры, то логично что все они и поменяются.
Так что создайте второй стиль, который будет отвечать только за нужные вам маркеры (по атрибуту каком-нибудь у точки) и вот его уже меняйте.
  • 0

freeExec
Завсегдатай
 
Зарегистрирован: 23 апр 2011
Откуда: Ульяновск (на карте)
 
Сообщения: 272
Репутация: 23
Проекты: 1

Re: как изменить размер объекта на карте на python

Сообщение lololol » 17 мар 2017, 22:15

что то я так и не разобрался как это делается... Создать стиль я вроде создал в редакторе Qgis, задал тип Categorized и насоздавал там разных. Это и есть стили?
А вот как изменить стиль нужного мне объекта - не понял.. Не могли бы помочь?.... :|
  • 0

lololol
Участник
 
Зарегистрирован: 12 фев 2016
 
Сообщения: 52
Репутация: 0

Re: как изменить размер объекта на карте на python

Сообщение lololol » 19 мар 2017, 20:56

вроде разобрался)) благодарю)
  • 0

lololol
Участник
 
Зарегистрирован: 12 фев 2016
 
Сообщения: 52
Репутация: 0

Re: как изменить размер объекта на карте на python

Сообщение lololol » 19 мар 2017, 22:47

оказывается не до конца))
я выбрал Categorized для слоя. я так понял по значению поля в таблице атрибутов он задает соответствующий маркер. Вот только вопрос,
1) я пробую изменить занчение атрибутов у объекта вызывая
Код: Выделить всё
 
 for feat in layer.getFeatures():
            if feat.id() == feature_id:
                attrs = feat.attributes()
                attrs_as_dict = dict(id=attrs[0], line=attrs[1], status=new_status, name=attrs[3]) # переписываю значения в словарь для дополнения
                break
if caps & QgsVectorDataProvider.ChangeAttributeValues:
            tmp = layer.dataProvider()
            res = tmp.changeAttributeValues({feature_id: attrs_as_dict})
            # появляется ошибка ERROR 1: Invalid index : -1 
            layer.updateExtents()

и после этого я проверяю и атрибуты не изменились у объекта.... :|
2) если они изменяться, поменяется ли сразу маркер объекта на карте, или нужны еще какие-то манипуляции?
буду признателен за помощь :)
  • 0

lololol
Участник
 
Зарегистрирован: 12 фев 2016
 
Сообщения: 52
Репутация: 0

Re: как изменить размер объекта на карте на python

Сообщение lololol » 19 мар 2017, 22:48

достаточно ли понятно описал проблему?))
  • 0

lololol
Участник
 
Зарегистрирован: 12 фев 2016
 
Сообщения: 52
Репутация: 0


Вернуться в Я новичок!

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

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


(Геокруг)

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