本文整理汇总了Python中qgis.core.QgsFeature.setAttribute方法的典型用法代码示例。如果您正苦于以下问题:Python QgsFeature.setAttribute方法的具体用法?Python QgsFeature.setAttribute怎么用?Python QgsFeature.setAttribute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsFeature
的用法示例。
在下文中一共展示了QgsFeature.setAttribute方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: draw_m5x
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import setAttribute [as 别名]
def draw_m5x(self):
x = self.e_mesh["Lx1d"] - 1
while x <= self.e_mesh["Rx1d"]+1:
x1d = math.floor(x)
x2d = math.floor((x-x1d)*8)
x5x = math.floor((x-x1d-x2d/8.0)*16)
y = self.e_mesh["Ly1d"] - 1
while y <= self.e_mesh["Uy1d"]+1:
y1d = math.floor(y)
y2d = math.floor((y-y1d)*8)
y5x = math.floor((y-y1d-y2d/8.0)*16)
f = QgsFeature(self.meshPolyLayer.pendingFields())
f.setGeometry(QgsGeometry.fromPolygon(
[[QgsPoint(x+100,y/1.5),QgsPoint(x+100,(y+1/16.0)/1.5),
QgsPoint(x+100+1/16.0,(y+1/16.0)/1.5),QgsPoint(x+100+1/16.0,y/1.5)]]))
m1d_str = str(int(y1d)) + str(int(x1d))
m2d_str = str(int(y2d)) + str(int(x2d))
m5x_str = str(int(x5x+y5x*2+1))
mesh_str = m1d_str + "-" + m2d_str + "-" + m5x_str
f.setAttribute("meshC",mesh_str)
self.meshPolyLayer.addFeature(f)
y += 1/16.0
x += 1/16.0
示例2: __createMemoryLayer
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import setAttribute [as 别名]
def __createMemoryLayer(self, layer_name, gtype, geometries, attributes, fNames, fTypes):
"""
Create a memory layer from parameters
:param layer_name: name for the layer
:param gtype: geometry type of the layer
:param geometries: objects geometries
:param attributes: objects attributes
:param fNames: fields names
:param fTypes: fields types
"""
layerList = QgsMapLayerRegistry.instance().mapLayersByName(layer_name)
if layerList:
QgsMapLayerRegistry.instance().removeMapLayers([layerList[0].id()])
epsg = self.canvas().mapRenderer().destinationCrs().authid()
fieldsParam = ""
for i in range(len(fNames)):
fieldsParam += "&field=" + fNames[i] + ":" + fTypes[i]
layer = QgsVectorLayer(gtype + "?crs=" + epsg + fieldsParam + "&index=yes", layer_name, "memory")
QgsMapLayerRegistry.instance().addMapLayer(layer)
layer.startEditing()
for i in range(len(geometries)):
feature = QgsFeature()
feature.setGeometry(QgsGeometry().fromWkt(geometries[i]))
fields = layer.pendingFields()
feature.setFields(fields)
for j in range(len(fNames)):
feature.setAttribute(fNames[j], attributes[i][j])
layer.addFeature(feature)
layer.commitChanges()
示例3: createGeometry
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import setAttribute [as 别名]
def createGeometry(self, geom):
geom = self.reprojectRubberBand(geom)
if geom :
layer = self.canvas.currentLayer()
feature = QgsFeature()
fields = layer.pendingFields()
feature.setGeometry(geom)
feature.initAttributes(fields.count())
provider = layer.dataProvider()
for i in range(fields.count()):
feature.setAttribute(i, provider.defaultValue(i))
form = QgsAttributeDialog(layer, feature, False)
form.setMode(QgsAttributeForm.AddFeatureMode)
formSuppress = layer.editFormConfig().suppress()
if formSuppress == QgsEditFormConfig.SuppressDefault:
if self.getSuppressOptions(): #this is calculated every time because user can switch options while using tool
layer.addFeature(feature, True)
else:
if not form.dialog().exec_():
feature.setAttributes(form.feature().attributes())
elif formSuppress == QgsEditFormConfig.SuppressOff:
if not form.dialog().exec_():
feature.setAttributes(form.feature().attributes())
else:
layer.addFeature(feature, True)
layer.endEditCommand()
self.canvas.refresh()
self.initVariable()
示例4: save2PointShape
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import setAttribute [as 别名]
def save2PointShape(shapePath, geodata, attribName,
attribData, label, spatialRef):
"""
:param label:
:param shapePath: Pfad wo Shapefile agespeichert wird
:param geodata: Koordinaten der Punkte
:param attribName: Attributname (Feldname) von zusätzlichen Werten
:param attribData: Werte für Attribute
:param spatialRef: Räumliche Referenz
"""
# define fields for feature attributes. A QgsFields object is needed
fields = QgsFields()
fields.append(QgsField("StuetzenNr", QVariant.String))
fields.append(QgsField(attribName, QVariant.Int))
writer = QgsVectorFileWriter(shapePath, "UTF8", fields, QgsWkbTypes.PointZ,
spatialRef, "ESRI Shapefile")
if writer.hasError() != QgsVectorFileWriter.NoError:
# TODO
raise Exception("Vector Writer")
for idx, (coords, attrib) in enumerate(zip(geodata, attribData)):
feature = QgsFeature()
feature.setFields(fields)
# TODO: Nicht 3D weil Methode fromPoint() nicht existiert. Wird evtl. in der Zukunft implementiert
feature.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(coords[0], coords[1])))
feature.setId(idx)
feature.setAttribute("StuetzenNr", label[idx])
feature.setAttribute(attribName, attrib)
writer.addFeature(feature)
del feature
# delete the writer to flush features to disk
del writer
示例5: test_ExpressionFieldEllipsoidLengthCalculation
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import setAttribute [as 别名]
def test_ExpressionFieldEllipsoidLengthCalculation(self):
#create a temporary layer
temp_layer = QgsVectorLayer("LineString?crs=epsg:3111&field=pk:int", "vl", "memory")
self.assertTrue(temp_layer.isValid())
f1 = QgsFeature(temp_layer.dataProvider().fields(), 1)
f1.setAttribute("pk", 1)
f1.setGeometry(QgsGeometry.fromPolyline([QgsPoint(2484588, 2425722), QgsPoint(2482767, 2398853)]))
temp_layer.dataProvider().addFeatures([f1])
# set project CRS and ellipsoid
srs = QgsCoordinateReferenceSystem(3111, QgsCoordinateReferenceSystem.EpsgCrsId)
QgsProject.instance().writeEntry("SpatialRefSys", "/ProjectCRSProj4String", srs.toProj4())
QgsProject.instance().writeEntry("SpatialRefSys", "/ProjectCRSID", srs.srsid())
QgsProject.instance().writeEntry("SpatialRefSys", "/ProjectCrs", srs.authid())
QgsProject.instance().writeEntry("Measure", "/Ellipsoid", "WGS84")
QgsProject.instance().writeEntry("Measurement", "/DistanceUnits", QgsUnitTypes.encodeUnit(QGis.Meters))
idx = temp_layer.addExpressionField('$length', QgsField('length', QVariant.Double)) # NOQA
# check value
f = temp_layer.getFeatures().next()
expected = 26932.156
self.assertAlmostEqual(f['length'], expected, 3)
# change project length unit, check calculation respects unit
QgsProject.instance().writeEntry("Measurement", "/DistanceUnits", QgsUnitTypes.encodeUnit(QGis.Feet))
f = temp_layer.getFeatures().next()
expected = 88360.0918635
self.assertAlmostEqual(f['length'], expected, 3)
示例6: add_gbif_occ_to_layer
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import setAttribute [as 别名]
def add_gbif_occ_to_layer(occurrences, layer):
features = []
dp = layer.dataProvider()
for o in occurrences:
attrs = []
for k in o.keys():
field_index = dp.fieldNameIndex(k)
# Add a layer attribute for each JSON fields(if not already encountered)
if field_index == -1:
dp.addAttributes([QgsField(k, QtCore.QVariant.String)])
attrs.append({'attr': k, 'val': _get_field_value(o, k)})
feat = QgsFeature()
# We should tell the feature which will be its fields
# !! We need a variable !! Don't merge the next two lines !!
myFields = dp.fields()
feat.setFields(myFields)
for d in attrs:
feat.setAttribute(d['attr'], d['val'])
feat.setGeometry(QgsGeometry.fromPoint(QgsPoint(o['decimalLongitude'], o['decimalLatitude'])))
features.append(feat)
add_features_to_layer(layer, features)
示例7: populate_qlayer
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import setAttribute [as 别名]
def populate_qlayer(self):
layer=self.qlayer
# shouldn't be necessary
layer.dataProvider().deleteFeatures(layer.allFeatureIds())
# takes an existing line memory layer, adds in nodes from g
feats=[]
valid=[]
for j in self.grid.valid_edge_iter():
geom=self.edge_geometry(j)
valid.append(j)
feat = QgsFeature()
feat.initAttributes(len(self.e_attrs))
for idx,eattr in enumerate(self.e_attrs):
name=eattr.name()
typecode=eattr.type()
if name=='edge_id':
feat.setAttribute(idx,j)
elif name=='c0':
feat.setAttribute(idx,int(self.grid.edges['cells'][j,0]))
elif name=='c1':
feat.setAttribute(idx,int(self.grid.edges['cells'][j,1]))
elif typecode==2: # integer
feat.setAttribute(idx,int(self.grid.edges[name][j]))
elif typecode==6: # double
feat.setAttribute(idx,float(self.grid.edges[name][j]))
else:
continue
# QGIS doesn't know about numpy types
# feat.setAttribute(3,int(self.grid.edges['mark'][j]))
feat.setGeometry(geom)
feats.append(feat)
(res, outFeats) = layer.dataProvider().addFeatures(feats)
self.grid.edges['feat_id'][valid]=[f.id() for f in outFeats]
示例8: _create_points
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import setAttribute [as 别名]
def _create_points(self):
"""Create points for testing"""
point_layer = QgsVectorLayer('Point?crs=EPSG:4326', 'points', 'memory')
point_provider = point_layer.dataProvider()
point_provider.addAttributes([QgsField('X', QVariant.Double)])
point_provider.addAttributes([QgsField('Y', QVariant.Double)])
x_index = point_provider.fieldNameIndex('X')
y_index = point_provider.fieldNameIndex('Y')
point_layer.startEditing()
for x in [10.0, 20.0, 30.0]:
for y in [10.0, 20.0, 30.0]:
feature = QgsFeature()
feature.initAttributes(2)
feature.setAttribute(x_index, x)
feature.setAttribute(y_index, y)
# noinspection PyCallByClass
geom = QgsGeometry.fromPoint(QgsPoint(x, y))
feature.setGeometry(geom)
_ = point_layer.dataProvider().addFeatures([feature])
point_layer.commitChanges()
return point_layer
示例9: processAlgorithm
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import setAttribute [as 别名]
def processAlgorithm(self, feedback):
extent = str(self.getParameterValue(self.EXTENT)).split(',')
spacing = float(self.getParameterValue(self.SPACING))
inset = float(self.getParameterValue(self.INSET))
randomize = self.getParameterValue(self.RANDOMIZE)
isSpacing = self.getParameterValue(self.IS_SPACING)
crsId = self.getParameterValue(self.CRS)
crs = QgsCoordinateReferenceSystem()
crs.createFromUserInput(crsId)
extent = QgsRectangle(float(extent[0]), float(extent[2]),
float(extent[1]), float(extent[3]))
fields = QgsFields()
fields.append(QgsField('id', QVariant.Int, '', 10, 0))
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
fields, QgsWkbTypes.Point, crs)
if randomize:
seed()
area = extent.width() * extent.height()
if isSpacing:
pSpacing = spacing
else:
pSpacing = sqrt(area / spacing)
f = QgsFeature()
f.initAttributes(1)
f.setFields(fields)
count = 0
total = 100.0 / (area / pSpacing)
y = extent.yMaximum() - inset
extent_geom = QgsGeometry.fromRect(extent)
extent_engine = QgsGeometry.createGeometryEngine(extent_geom.geometry())
extent_engine.prepareGeometry()
while y >= extent.yMinimum():
x = extent.xMinimum() + inset
while x <= extent.xMaximum():
if randomize:
geom = QgsGeometry().fromPoint(QgsPoint(
uniform(x - (pSpacing / 2.0), x + (pSpacing / 2.0)),
uniform(y - (pSpacing / 2.0), y + (pSpacing / 2.0))))
else:
geom = QgsGeometry().fromPoint(QgsPoint(x, y))
if extent_engine.intersects(geom.geometry()):
f.setAttribute('id', count)
f.setGeometry(geom)
writer.addFeature(f)
x += pSpacing
count += 1
feedback.setProgress(int(count * total))
y = y - pSpacing
del writer
示例10: finalCopy
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import setAttribute [as 别名]
def finalCopy(self, l_orig, l_dest, data):
"""Eléments sélectionnés"""
selection = l_orig.selectedFeatures()
"""Itération par entité"""
if l_orig.selectedFeatureCount() < 1: self.msgBarre(2, "1")
if self.franc :
type1 = {0:"point",1:"ligne",2:"polygone",3:"inconnu", 4:u"aucune géométrie"}
type2 = {0:"inconnu",1:"point",2:"ligne",3:"polygone",4:"point",5:"ligne",6:"polygone",7:u"aucune géométrie"}
else:
type1 = {0:"point",1:"line",2:"polygon",3:"unknown", 4:u"no geometry"}
type2 = {0:"unknown",1:"point",2:"line",3:"polygon",4:"point",5:"line",6:"polygon",7:u"no geometry"}
for feature in selection :
if type1[feature.geometry().type()] == type2[l_dest.wkbType()]:
"""Création des entités"""
caps = l_dest.dataProvider().capabilities()
if caps & QgsVectorDataProvider.AddFeatures:
feat = QgsFeature(l_dest.pendingFields())
for x in range(0, len(data), 2) :
if data[x + 1][:3] == "fld":
feat.setAttribute(data[x], feature[data[x + 1].split("|")[1]])
elif data[x + 1] == "null":
pass
else:
feat.setAttribute(data[x], data[x + 1])
feat.setGeometry(feature.geometry())
l_dest.startEditing()
l_dest.addFeatures([feat], True)
else:
self.msgBarre(2, "2|" + type1[feature.geometry().type()] + "_" + type2[l_dest.wkbType()])
break
示例11: rightClicked
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import setAttribute [as 别名]
def rightClicked(self, _):
"""
The party is over, the reach digitized. Create a feature from the rubberband and
show the feature form.
"""
self.tempRubberband.reset()
f = QgsFeature(self.layer.pendingFields())
f.setGeometry(self.rubberband.asGeometry())
if self.firstSnappingResult is not None:
req = QgsFeatureRequest(self.firstSnappingResult.snappedAtGeometry)
from_networkelement = self.firstSnappingResult.layer.getFeatures(req).next()
from_field = self.layer.pendingFields()\
.indexFromName('rp_from_fk_wastewater_networkelement')
f.setAttribute(from_field, from_networkelement.attribute('obj_id'))
if self.lastSnappingResult is not None:
req = QgsFeatureRequest(self.lastSnappingResult.snappedAtGeometry)
to_networkelement = self.lastSnappingResult.layer.getFeatures(req).next()
to_field = self.layer.pendingFields().indexFromName('rp_to_fk_wastewater_networkelement')
f.setAttribute(to_field, to_networkelement.attribute('obj_id'))
dlg = self.iface.getFeatureForm(self.layer, f)
dlg.setIsAddDialog(True)
dlg.exec_()
self.rubberband.reset()
示例12: processAlgorithm
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import setAttribute [as 别名]
def processAlgorithm(self, parameters, context, feedback):
source = self.parameterAsSource(parameters, self.INPUT, context)
pointCount = self.parameterAsDouble(parameters, self.POINTS_NUMBER, context)
minDistance = self.parameterAsDouble(parameters, self.MIN_DISTANCE, context)
bbox = source.sourceExtent()
sourceIndex = QgsSpatialIndex(source, feedback)
fields = QgsFields()
fields.append(QgsField('id', QVariant.Int, '', 10, 0))
(sink, dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context,
fields, QgsWkbTypes.Point, source.sourceCrs())
nPoints = 0
nIterations = 0
maxIterations = pointCount * 200
total = 100.0 / pointCount if pointCount else 1
index = QgsSpatialIndex()
points = dict()
random.seed()
while nIterations < maxIterations and nPoints < pointCount:
if feedback.isCanceled():
break
rx = bbox.xMinimum() + bbox.width() * random.random()
ry = bbox.yMinimum() + bbox.height() * random.random()
p = QgsPointXY(rx, ry)
geom = QgsGeometry.fromPointXY(p)
ids = sourceIndex.intersects(geom.buffer(5, 5).boundingBox())
if len(ids) > 0 and \
vector.checkMinDistance(p, index, minDistance, points):
request = QgsFeatureRequest().setFilterFids(ids).setSubsetOfAttributes([])
for f in source.getFeatures(request):
if feedback.isCanceled():
break
tmpGeom = f.geometry()
if geom.within(tmpGeom):
f = QgsFeature(nPoints)
f.initAttributes(1)
f.setFields(fields)
f.setAttribute('id', nPoints)
f.setGeometry(geom)
sink.addFeature(f, QgsFeatureSink.FastInsert)
index.insertFeature(f)
points[nPoints] = p
nPoints += 1
feedback.setProgress(int(nPoints * total))
nIterations += 1
if nPoints < pointCount:
feedback.pushInfo(self.tr('Could not generate requested number of random points. '
'Maximum number of attempts exceeded.'))
return {self.OUTPUT: dest_id}
示例13: processAlgorithm
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import setAttribute [as 别名]
def processAlgorithm(self, parameters, context, feedback):
spacing = self.parameterAsDouble(parameters, self.SPACING, context)
inset = self.parameterAsDouble(parameters, self.INSET, context)
randomize = self.parameterAsBool(parameters, self.RANDOMIZE, context)
isSpacing = self.parameterAsBool(parameters, self.IS_SPACING, context)
crs = self.parameterAsCrs(parameters, self.CRS, context)
extent = self.parameterAsExtent(parameters, self.EXTENT, context, crs)
fields = QgsFields()
fields.append(QgsField('id', QVariant.Int, '', 10, 0))
(sink, dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context,
fields, QgsWkbTypes.Point, crs)
if sink is None:
raise QgsProcessingException(self.invalidSinkError(parameters, self.OUTPUT))
if randomize:
seed()
area = extent.width() * extent.height()
if isSpacing:
pSpacing = spacing
else:
pSpacing = sqrt(area / spacing)
f = QgsFeature()
f.initAttributes(1)
f.setFields(fields)
count = 0
total = 100.0 / (area / pSpacing)
y = extent.yMaximum() - inset
extent_geom = QgsGeometry.fromRect(extent)
extent_engine = QgsGeometry.createGeometryEngine(extent_geom.constGet())
extent_engine.prepareGeometry()
while y >= extent.yMinimum():
x = extent.xMinimum() + inset
while x <= extent.xMaximum():
if feedback.isCanceled():
break
if randomize:
geom = QgsGeometry().fromPointXY(QgsPointXY(
uniform(x - (pSpacing / 2.0), x + (pSpacing / 2.0)),
uniform(y - (pSpacing / 2.0), y + (pSpacing / 2.0))))
else:
geom = QgsGeometry().fromPointXY(QgsPointXY(x, y))
if extent_engine.intersects(geom.constGet()):
f.setAttribute('id', count)
f.setGeometry(geom)
sink.addFeature(f, QgsFeatureSink.FastInsert)
x += pSpacing
count += 1
feedback.setProgress(int(count * total))
y = y - pSpacing
return {self.OUTPUT: dest_id}
示例14: test_ExpressionFieldEllipsoidAreaCalculation
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import setAttribute [as 别名]
def test_ExpressionFieldEllipsoidAreaCalculation(self):
#create a temporary layer
temp_layer = QgsVectorLayer("Polygon?crs=epsg:3111&field=pk:int", "vl", "memory")
self.assertTrue(temp_layer.isValid())
f1 = QgsFeature(temp_layer.dataProvider().fields(), 1)
f1.setAttribute("pk", 1)
f1.setGeometry(QgsGeometry.fromPolygon([[QgsPoint(2484588, 2425722), QgsPoint(2482767, 2398853), QgsPoint(2520109, 2397715), QgsPoint(2520792, 2425494), QgsPoint(2484588, 2425722)]]))
temp_layer.dataProvider().addFeatures([f1])
# set project CRS and ellipsoid
srs = QgsCoordinateReferenceSystem(3111, QgsCoordinateReferenceSystem.EpsgCrsId)
QgsProject.instance().writeEntry("SpatialRefSys", "/ProjectCRSProj4String", srs.toProj4())
QgsProject.instance().writeEntry("SpatialRefSys", "/ProjectCRSID", srs.srsid())
QgsProject.instance().writeEntry("SpatialRefSys", "/ProjectCrs", srs.authid())
QgsProject.instance().writeEntry("Measure", "/Ellipsoid", "WGS84")
QgsProject.instance().writeEntry("Measurement", "/AreaUnits", QgsUnitTypes.encodeUnit(QgsUnitTypes.SquareMeters))
idx = temp_layer.addExpressionField('$area', QgsField('area', QVariant.Double)) # NOQA
# check value
f = temp_layer.getFeatures().next()
expected = 1009089817.0
self.assertAlmostEqual(f['area'], expected, delta=1.0)
# change project area unit, check calculation respects unit
QgsProject.instance().writeEntry("Measurement", "/AreaUnits", QgsUnitTypes.encodeUnit(QgsUnitTypes.SquareMiles))
f = temp_layer.getFeatures().next()
expected = 389.6117565069
self.assertAlmostEqual(f['area'], expected, 3)
示例15: draw_m3d
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import setAttribute [as 别名]
def draw_m3d(self):
x = self.e_mesh["Lx1d"] + self.e_mesh["Lx2d"] / 8.0 + self.e_mesh["Lx3d"] / 80.0 - 1 / 80.0
while x <= self.e_mesh["Rx1d"] + self.e_mesh["Rx2d"] / 8.0 + self.e_mesh["Rx3d"] / 80.0 + 1 / 80.0:
x1d = math.floor(x)
x2d = math.floor((x-x1d)*8)
x3d = math.floor((x-x1d-x2d/8.0)*80)
y = self.e_mesh["Ly1d"] + self.e_mesh["Ly2d"] / 8.0 + self.e_mesh["Ly3d"] / 80.0 - 1 / 80.0
while y <= self.e_mesh["Uy1d"] + self.e_mesh["Uy2d"] / 8.0 + self.e_mesh["Uy3d"] / 80.0 + 1 / 80.0:
y1d = math.floor(y)
y2d = math.floor((y-y1d)*8)
y3d = math.floor((y-y1d-y2d/8.0)*80)
f = QgsFeature(self.meshPolyLayer.pendingFields())
f.setGeometry(QgsGeometry.fromPolygon(
[[QgsPoint(x+100,y/1.5),QgsPoint(x+100,(y+1/80.0)/1.5),
QgsPoint(x+100+1/80.0,(y+1/80.0)/1.5),QgsPoint(x+100+1/80.0,y/1.5)]]))
m1d_str = str(int(y1d)) + str(int(x1d))
m2d_str = str(int(y2d)) + str(int(x2d))
m3d_str = str(int(y3d)) + str(int(x3d))
mesh_str = m1d_str + m2d_str + m3d_str
f.setAttribute("meshC",mesh_str)
self.meshPolyLayer.addFeature(f)
y += 1/80.0
x += 1/80.0