It could be done with PyQGIS. Assuming that vector layer in next image is your buffer (it was relatively small for verification purposes):
I tried out next code for creating the regularly spaced point layer grid (100 m) for each feature.
layer = iface.activeLayer()
feats = [ feat for feat in layer.getFeatures()]
points = []
for feat in feats:
extent = feat.geometry().boundingBox()
xmin = extent.xMinimum()
ymax = extent.yMaximum()
xmax = extent.xMaximum()
ymin = extent.yMinimum()
rows = int(ymax - ymin)/100
cols = int(xmax - xmin)/100
x = xmin
y = ymax
geom_feat = feat.geometry()
for i in range(rows+1):
for j in range(cols+1):
pt = QgsPoint(x,y)
tmp_pt = QgsGeometry.fromPoint(pt)
if tmp_pt.within(geom_feat):
points.append(tmp_pt.asPoint())
x +=100
x = xmin
y -= 100
epsg = layer.crs().postgisSrid()
#points
uri = "Point?crs=epsg:" + str(epsg) + "&field=id:integer""&index=yes"
mem_layer = QgsVectorLayer(uri,
'point',
'memory')
prov = mem_layer.dataProvider()
feats = [ QgsFeature() for i in range(len(points)) ]
for i, feat in enumerate(feats):
feat.setAttributes([i])
feat.setGeometry(QgsGeometry.fromPoint(points[i]))
prov.addFeatures(feats)
QgsMapLayerRegistry.instance().addMapLayer(mem_layer)
After running the above code at the Python Console of QGIS, I got:
It works adequately for these smalls areas.