Saya juga mengalami masalah ini di QGIS 3 dan menemukan solusi ini di stack overflow
Pada dasarnya idenya adalah untuk menerapkan sudut pada poligon yang luasnya didefinisikan sebelum membuat grid. Jika poligon Anda bukan persegi panjang, Anda harus membuat layer dari tingkat poligon sebelumnya, dan kemudian memutarnya. Kemudian Anda dapat membuat kisi sesuai dengan tingkatan baru ini dan kemudian memutar poligon dan kisi kembali ke tingkat Poligon asli. Semua ini sambil memastikan koordinat x, y yang sama digunakan sebagai titik jangkar di kedua lapisan.
#Define extent of Polygon
ext = QgsVectorLayer('path_to_polygon.shp', '', 'ogr' ).extent()
xmin = ext.xMinimum()
xmax = ext.xMaximum()
ymin = ext.yMinimum()
ymax = ext.yMaximum()
coords = "%f,%f,%f,%f" %(xmin, xmax, ymin, ymax)
#Define The angle of rotation. Change value to yours
azimut = 70.043
#define anchor point for rotation
anchor = "%f, %f" % (xmin, ymax)
#define x and y spacing of grid. Update to your desired spacing.
x = 3
y = 6
#create new polygon from extent
processing.run("native:extenttolayer", {'INPUT':coords,'OUTPUT':'Path_to_Output.shp'})
#Rotate Extent
processing.run("native:rotatefeatures", {'INPUT': 'Path_to_extent_Polygon.shp','ANGLE': azimut,'ANCHOR':anchor + '[EPSG:4326]','OUTPUT': 'Path_to_rotated_extent.shp'})
#Define extent of Rotated Polygon
ext1 = QgsVectorLayer('Path_to_Rotated_Extent.shp', '', 'ogr' ).extent()
xmin1 = ext1.xMinimum()
xmax1 = ext1.xMaximum()
ymin1 = ext1.yMinimum()
ymax1 = ext1.yMaximum()
coords1 = "%f,%f,%f,%f" %(xmin1, xmax1, ymin1, ymax1)
#Create grid
processing.run("qgis:creategrid", {'TYPE':0,'EXTENT': coords1 +'[EPSG:4326]','HSPACING':x,'VSPACING':y,'HOVERLAY':0,'VOVERLAY':0,'CRS':'EPSG:4326','OUTPUT': 'Path_to_grid.shp'})
#Rotate Grid to original extent
processing.run("native:rotatefeatures", {'INPUT': 'path_to_grid.shp','ANGLE': -
azimut,'ANCHOR':rotate + '[EPSG:4326]','OUTPUT': 'path_to_rotated_grid.shp'})
# Clip Grid to Original Polygon
processing.run("native:clip", {'INPUT':'path_to_rotated_grid.shp','OVERLAY':
'path_to_original_Polygon.shp','OUTPUT':'path_to_final_grid.shp'})