def startConvert(self,layer:QgsMapLayer): layerName = layer.name() nodeCoorDict = OrderedDict() graph = nx.Graph() if layerName: features_forCounts = layer.getFeatures() # type:QgsFeatureIterator # 记录当前处理的polygon id编号 plyId = 0 count = 0 feaNums = sum(1 for _ in features_forCounts) #此时已经迭代过了 features = layer.getFeatures() # type:QgsFeatureIterator pbar = self.dlg.progressBar # type:QProgressBar pbar.setRange(0, feaNums) print(feaNums) for feature in features: #if count >= 10: # break geom = feature.geometry() geomSingleType = QgsWkbTypes.isSingleType(geom.wkbType()) if geom.type() == QgsWkbTypes.PolygonGeometry: if geomSingleType: polygon = geom.asPolygon() nodeCoorDict, graph = self.parsePolygon2Network(polygon, nodeCoorDict, graph, plyId=plyId) plyId = plyId + 1 else: multiPolygon = geom.asMultiPolygon() for polygon in multiPolygon: nodeCoorDict,graph = self.parsePolygon2Network(polygon,nodeCoorDict,graph,plyId=plyId) plyId = plyId + 1 pbar.setValue(count) count = count + 1 #print("complete!") #plt.subplot(121) #print(nodeCoorDict) ''' # 每个节点坐标,绘制带坐标的图 pos = list(nodeCoorDict.values()) #nx.draw(graph,pos, with_labels=True) nx.draw(graph, pos,node_size=20) nx.fruchterman_reingold_layout(graph) plt.show() ''' print('all complete') pbar.setValue(feaNums) return nodeCoorDict,graph,True
def startConvert(self, layer: QgsMapLayer): layerName = layer.name() nodeCoorDict = OrderedDict() graph = nx.Graph() if layerName: features = layer.getFeatures() count = 0 for feature in features: if count > 10: break geom = feature.geometry() geomSingleType = QgsWkbTypes.isSingleType(geom.wkbType()) if geom.type() == QgsWkbTypes.PolygonGeometry: if geomSingleType: polygon = geom.asPolygon() else: multiPolygon = geom.asMultiPolygon() for polygon in multiPolygon: nodeCoorDict = self.parsePolygon2Network( polygon, nodeCoorDict, graph) count = count + 1 ''' plt.subplot(121) nx.draw(graph, with_labels=True, font_weight='bold') plt.show() ''' return nodeCoorDict