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

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
lololol
Участник
Сообщения: 55
Зарегистрирован: 11 фев 2016, 23:52
Репутация: 0

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

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

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

doujin
Активный участник
Сообщения: 156
Зарегистрирован: 28 июн 2012, 01:02
Репутация: 72
Откуда: Vladivostok

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

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

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

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

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

Сообщение lololol » 21 фев 2017, 23:59

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

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

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

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

doujin писал(а):А программное обеспечение, в котором вы слой настраиваете с помощью python, предлагается угадать?
пишу приложение с использованием библиотеки qgis.gui, qgis.core и PyQt4.
векторный слой - shp-файл, созданный в Qgis. Провайдер "ogr". Что еще необходимо?) Слой типа points

doujin
Активный участник
Сообщения: 156
Зарегистрирован: 28 июн 2012, 01:02
Репутация: 72
Откуда: Vladivostok

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

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

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

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

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

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

Благодарю, посмотрел.
Только не все понятно.
Там можно еще какие-то свои классы создавать изменения и создания элементов

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

class FooSymbolLayerWidget(QgsSymbolLayerV2Widget)
class FooSymbolLayerMetadata(QgsSymbolLayerV2AbstractMetadata)
class FooSymbolLayer(QgsMarkerSymbolLayerV2)
не совсем понял как они работают и что с ними можно делать. И смутило название)) Foo...
не могли бы пояснить что они делают?)

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

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

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

Сообщение lololol » 07 мар 2017, 19: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))
но тогда изменяются все точки на слое
Надо вводить разные маркеры на слое и если да, то как? не могли бы дать ссылочку именно на это?)

freeExec
Гуру
Сообщения: 502
Зарегистрирован: 23 апр 2011, 10:32
Проекты: 1
Репутация: 59
Откуда: Ульяновск

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

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

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

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

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

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

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

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

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

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

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

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

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

Сообщение lololol » 19 мар 2017, 21: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) если они изменяться, поменяется ли сразу маркер объекта на карте, или нужны еще какие-то манипуляции?
буду признателен за помощь :)

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

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

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

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

Ответить

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