attributeMap()
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: attributeMap()
Видимо, там, где обработка объекта, отвечающего условию. Т.е. внутри if
-
- Участник
- Сообщения: 67
- Зарегистрирован: 16 май 2012, 10:38
- Репутация: 0
Re: attributeMap()
Код: Выделить всё
attrs = ft.attributeMap()
for (k,attr) in attrs.iteritems():
f.write("%d: %s" % (k,attr.toString())+" | ")
ничего не записывает..видимо я делаю что-то не так?(
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: attributeMap()
А вы вообще в if попадаете? Чему у вас равна testGeometry? В слое есть объекты с геометрией равной testGeometry?
-
- Участник
- Сообщения: 67
- Зарегистрирован: 16 май 2012, 10:38
- Репутация: 0
Re: attributeMap()
Дело в том,что я программирую в PyScripter.
и напрямую его не запускаю,так как сразу вылетает море ошибок,решать которые уже нет сил.
а если выполнять через Qgis,ввиде модуля,то работает всё отлично
Поэтому пошагово программу мне и не запустить.
а самая первая ошибка вылетает "ImportError:No module named PyQt4.QtCore"
Хотя по идее он есть.
и да,наверное,testGeometry получается пустая.
и напрямую его не запускаю,так как сразу вылетает море ошибок,решать которые уже нет сил.
а если выполнять через Qgis,ввиде модуля,то работает всё отлично
Поэтому пошагово программу мне и не запустить.
а самая первая ошибка вылетает "ImportError:No module named PyQt4.QtCore"
Хотя по идее он есть.
и да,наверное,testGeometry получается пустая.
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: attributeMap()
Вот и ответ на ваш вопрос. Если вы сравниваете с пустой геометрией, то естественно, ни один объект не удовлетворяет условию, и внутрь if'а вы не попадаете.Cathrin писал(а):и да,наверное,testGeometry получается пустая.
-
- Участник
- Сообщения: 67
- Зарегистрирован: 16 май 2012, 10:38
- Репутация: 0
Re: attributeMap()
а почему она пустая?
как мне сделать что бы она не была пустой?
как мне сделать что бы она не была пустой?
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: attributeMap()
Потому что, вероятно, вы ее не инициализировалиCathrin писал(а):а почему она пустая?
Инициализировать ее. Допустим, вам надо сравнить объекты слоя с полигоном, тогда у вас будет что-то вродеCathrin писал(а):как мне сделать что бы она не была пустой?
Код: Выделить всё
testGeometry = QgsGeometry.fromPolygon(<тут_описание_полигона>)
-
- Участник
- Сообщения: 67
- Зарегистрирован: 16 май 2012, 10:38
- Репутация: 0
Re: attributeMap()
А что в описании писать?
С каким полигоном мне сравнивать?
С каким полигоном мне сравнивать?
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: attributeMap()
В описании у вас должен быть список, состоящий из объектов QgsPolyline (см. описание QgsPolygon)Cathrin писал(а):А что в описании писать? С каким полигоном мне сравнивать?
А вообще это был пример. Я не знаю, может вам и не с полигоном надо сравнивать, может, вам вообще ничего сравнивать не надо.
-
- Участник
- Сообщения: 67
- Зарегистрирован: 16 май 2012, 10:38
- Репутация: 0
Re: attributeMap()
а я не понимаю зачем сравнивать((
и если я не сравню ни с чем,то и работать не будет?
можно инициализировать её,ни с чем не сравнив?
и если я не сравню ни с чем,то и работать не будет?
можно инициализировать её,ни с чем не сравнив?
-
- Участник
- Сообщения: 67
- Зарегистрирован: 16 май 2012, 10:38
- Репутация: 0
Re: attributeMap()
вот я нашла как его можно примерно заполнить
но не поняла,точки мне оставить такими же?
Код: Выделить всё
testGeometry = QgsGeometry.fromPolygon( [ [ QgsPoint(1,1), QgsPoint(2,2), QgsPoint(2,1) ] ] )
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: attributeMap()
Сравнение вам предлагается в качестве способа выбора нужных объектов. Объект можно выбрать либо пространственным запросом (например, выбрать все объекты, находящиеся внутри заданного полигона), либо атрибутивным (например, выбрать все объекты, у которых значение поля "X" равно "Y"). В самом первом сообщении топика я читаю "нужно записать атрибуты выделенного объекта в файл", в этом случае "выделенность" своего рода аттрибутивный признак и из консоли QGIS получить список всех выделенных объектов можно с помощью метода векторного слоя selectedFeatures. Таким образом, записать в файл аттрибуты выделенных объектов, работая в консоли QGIS, можно следующим образом:
Код: Выделить всё
f=open('c:/personal/gislab/attr.txt', 'wt')
layer = qgis.utils.iface.activeLayer()
feats = layer.selectedFeatures()
for feat in feats:
attrs = feat.attributeMap()
for (k,attr) in attrs.iteritems():
f.write("%d: %s\n" % (k, attr.toString()))
f.close()
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Участник
- Сообщения: 67
- Зарегистрирован: 16 май 2012, 10:38
- Репутация: 0
Re: attributeMap()
Всё работает!
Спасибо огромное!
ещё вопросик небольшой
выводом этих атрибутов можно управлять?
ну допустим если выводит лишние,или если нужно только 3,а выводит 4
Спасибо огромное!
ещё вопросик небольшой
выводом этих атрибутов можно управлять?
ну допустим если выводит лишние,или если нужно только 3,а выводит 4
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: attributeMap()
Конечно можно, просто добавьте условие проверки индекса атрибутивного поля:
Код: Выделить всё
for (k,attr) in attrs.iteritems():
if k in [0,1,2]:
f.write("%d: %s\n" % (k, attr.toString()))
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Участник
- Сообщения: 67
- Зарегистрирован: 16 май 2012, 10:38
- Репутация: 0
Re: attributeMap()
да,замечательно,ещё раз спасибо)
а ещё такой нюанс..
у меня есть атрибут "площадь"
и при выводе он к ней добавляет в конец цифру 2
тоесть если на самом деле площадь 181,он выводит 1812
и так со всеми объектами
странно так...
не знаете почему он может так выводить?
а ещё такой нюанс..
у меня есть атрибут "площадь"
и при выводе он к ней добавляет в конец цифру 2
тоесть если на самом деле площадь 181,он выводит 1812
и так со всеми объектами
странно так...
не знаете почему он может так выводить?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость