我正在创建一个处理点云的 Qgis 插件。当在Qgis中创建QgsPointCloudLayer对象时,该图层的索引开始。但这个索引达到了100%,还没有完成。
def processAlgorithm(self, parameters, context, feedback):
input = self.parameterAsPointCloudLayer(parameters, self.INPUT, context).source()
output = self.parameterAsFileOutput(parameters, self.OUTPUT, context)
#processing point cloud
#...
# adding layer
layer = QgsPointCloudLayer(output, "New layer", 'pdal')
if not layer.isValid():
feedback.pushInfo("invalid layer!")
else:
feedback.pushInfo("layer loaded!")
QgsProject.instance().addMapLayer(layer)
return {self.name(): 0}
我试图指定文件 .las、.laz、.copc.laz 的路径,但结果总是相同 - 无休止的索引。如果您手动将此云点添加到 Qgis(通过拖动或图层 -> 添加图层),那么一切都会正常工作。 我尝试在 Python 控制台(位于 Qgis 内部)中创建一个 QgsPointCloudLayer 并且它有效。但它在插件内部不起作用。
处理算法位于与 QgsInterface 不同的线程上。从处理算法访问接口(QgsProject.instance())效果不佳,经常导致 Qgis 崩溃。
您应该在算法结束时将图层返回到接收器中。