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

неправильный вывод атрибутов

Добавлено: 08 июн 2012, 09:28
Cathrin

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

for (k,attr) in attrs.iteritems():
                if k in [1,2]:
                    f.write("%d: %s" % (k, attr.toString()))
Вывожу вот таким образом атрибуты выделенного мною объекта.
но в файл,к атрибуту "площадь",записывается лишняя цифра "2".Именно "2".И так со всеми объектами
и вместо площади 121,я получаю 1212

Подскажите,пожалуйста,в чем может быть дело и как это можно исправить?

Re: неправильный вывод атрибутов

Добавлено: 08 июн 2012, 09:57
Denis Rykov
Так сложно сказать, приложите shape-файл хотя бы с парой таких объектов, чтобы можно было посмотреть.

Re: неправильный вывод атрибутов

Добавлено: 08 июн 2012, 10:14
Ariki
Подозреваю, что причина внутри toString()

Re: неправильный вывод атрибутов

Добавлено: 08 июн 2012, 10:26
Cathrin
вот

Re: неправильный вывод атрибутов

Добавлено: 08 июн 2012, 10:29
Cathrin
Ariki писал(а):Подозреваю, что причина внутри toString()
Да,мне тоже так кажется
Наверно при конвертации из int он что-то не то делает...но почему..непонятно..

Re: неправильный вывод атрибутов

Добавлено: 08 июн 2012, 10:29
Denis Rykov
Вы шутите? Попробуйте открыть у себя то, что вы выложили. Запакуйте все необходимые файлы в один архив и его приложите, в *.shp атрибутика не хранится.

Re: неправильный вывод атрибутов

Добавлено: 08 июн 2012, 10:31
Voltron
Denis Rykov писал(а):Вы шутите? Попробуйте открыть у себя то, что вы выложили.
Самое смешное, что у топикстартера как раз все откроется.

Re: неправильный вывод атрибутов

Добавлено: 08 июн 2012, 10:34
Cathrin
Всё всё,ступила и поторопилась,простите!

Re: неправильный вывод атрибутов

Добавлено: 08 июн 2012, 10:39
Denis Rykov
У меня никаких двоек лишних нет, всё нормально выводится:

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

0: 3
1: 2996
2: 109
0: 3
1: 153
2: 121

Re: неправильный вывод атрибутов

Добавлено: 08 июн 2012, 10:41
Cathrin
а вы через консоль?
я просто в PyScripter.
запускаю как модуль
Это имеет значение?

Re: неправильный вывод атрибутов

Добавлено: 08 июн 2012, 10:43
Denis Rykov
Да, через консоль, что такое PyScripter не в курсе.

Re: неправильный вывод атрибутов

Добавлено: 08 июн 2012, 10:44
Cathrin

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

from PyQt4.QtCore import *
from PyQt4.QtGui import *
from qgis.core import *


class HelloWorld:

    def __init__(self, iface):
        # Save reference to the QGIS interface
        self.iface = iface
        self.canvas = iface.mapCanvas()

    def initGui(self):
        # Create action that will start plugin
        self.action = QAction(QIcon(":/plugins/"), "&HelloWorld", self.iface.mainWindow())
        # connect the action to the run method
        QObject.connect(self.action, SIGNAL("activated()"), self.hello_world)

        # Add toolbar button and menu item
        self.iface.addPluginToMenu("HelloWorld", self.action)



    def unload(self):
        # Remove the plugin menu item and icon
        self.iface.removePluginMenu("HelloWorld",self.action)



    # run
    def hello_world(self):


        QMessageBox.information(self.iface.mainWindow(), QCoreApplication.translate('HelloWorld', "HelloWorld"), QCoreApplication.translate('HelloWorld', "HelloWorld"))
        f=open('/temp/op.txt', 'wt')


        layer = self.iface.activeLayer()
        feats = layer.selectedFeatures()
        for feat in feats:
            attrs = feat.attributeMap()


            for (k,attr) in attrs.iteritems():
                if k in [1,2]:
                    f.write("%d: %s" % (k,attr.toString()))
                   
        f.close()
if __name__ == "__main__":
    pass
Вот весь мой код

Re: неправильный вывод атрибутов

Добавлено: 08 июн 2012, 10:59
Denis Rykov
А в консоли у вас нормально работает? Если да, то придется вам самим разбираться со своим PyScripter.

Re: неправильный вывод атрибутов

Добавлено: 08 июн 2012, 11:03
Cathrin
а в какой именно консоли вы запускали? в консоли Qgis?
я не могу запустить запустить через консоль.
построчно вводить или как скриптом,изначально записав код в .py файл ?

Re: неправильный вывод атрибутов

Добавлено: 08 июн 2012, 11:04
Cathrin
а PyScripter это IDE для python
или по-другому как Visual Studio для C#