def __init__(self, geom=None, attributes=None):
        QgsFeature.__init__(self)

        self.xData = dict()
        self.caption = ""
        self.type = "Line"

        fieldAltitude = "Altitude"
        fieldName = "Caption"
        fieldNameBulge = "Bulge"
        fieldNameGeometryType = "Type"
        fieldCategory = "CATEGORY"
        fieldXdataName = "XDataName"
        fieldXdataPoint = "XDataPoint"
        fieldXdataTolerence = "XDataTol"
        fieldCenterPoint = "CenterPt"
        fieldSurface = "Surface"

        fields = QgsFields()
        fields.append(QgsField(fieldAltitude, QVariant.String))
        fields.append(QgsField(fieldName, QVariant.String))
        fields.append(QgsField(fieldNameBulge, QVariant.String))
        fields.append(QgsField(fieldNameGeometryType, QVariant.String))
        fields.append(QgsField(fieldCategory, QVariant.String))
        fields.append(QgsField(fieldXdataName, QVariant.String))
        fields.append(QgsField(fieldXdataPoint, QVariant.String))
        fields.append(QgsField(fieldXdataTolerence, QVariant.String))
        fields.append(QgsField(fieldCenterPoint, QVariant.String))
        fields.append(QgsField(fieldSurface, QVariant.String))

        self.setFields(fields)

        if geom != None:
            self.setGeometry(geom)

            if geom.type() == QGis.Line:
                if len(geom.asPolyline()) == 2:
                    self.type = "Line"
                else:
                    self.type = "Polyline"
            elif geom.type() == QGis.Point:
                self.type = "Point"
            elif geom.type() == QGis.Polygon:
                self.type = "Polygon"
            self.setAttribute("Type", self.type)

        if attributes != None:
            attrItems = attributes.items()
            if len(attrItems) != 0:
                for attrList in attrItems:
                    if isinstance(attrList[1], Point3D):
                        attrStr = str(attrList[1].get_X()) + "," + str(
                            attrList[1].get_Y()) + "," + str(
                                attrList[1].get_Z())
                        self.setAttribute(attrList[0], attrStr)
                    elif isinstance(attrList[1], float) or isinstance(
                            attrList[1], int):
                        self.setAttribute(attrList[0], str(attrList[1]))
                    else:
                        self.setAttribute(attrList[0], attrList[1])
Example #2
0
 def __init__(self, *__args):
     QgsFeature.__init__(self, *__args)
     self.geometry_type = None