def AddGeoms(self, currLayer): bufferGeoms = [] tolerance = QadVariables.get( QadMsg.translate("Environment variables", "TOLERANCE2APPROXCURVE")) for layerEntitySet in self.entitySet.layerEntitySetList: layer = layerEntitySet.layer geoms = layerEntitySet.getGeometryCollection() for geom in geoms: # trasformo la geometria nel crs del canvas per lavorare con coordinate piane xy newGeom = self.layerToMapCoordinates(layer, geom) g = qad_utils.ApproxCurvesOnGeom(newGeom.buffer(self.width, self.segments), \ self.segments, self.segments, \ tolerance) # trasformo la geometria nel crs del layer bufferGeoms.append(self.mapToLayerCoordinates(layer, g)) self.plugIn.beginEditCommand("Feature buffered", currLayer) # filtro le features per tipo pointGeoms, lineGeoms, polygonGeoms = qad_utils.filterGeomsByType(bufferGeoms, \ currLayer.geometryType()) # aggiungo le geometrie del tipo corretto if currLayer.geometryType() == QGis.Line: polygonToLines = [] # Riduco le geometrie in linee for g in polygonGeoms: lines = qad_utils.asPointOrPolyline(g) for l in lines: if l.type() == QGis.Line: polygonToLines.append(l) # plugIn, layer, geoms, coordTransform , refresh, check_validity if qad_layer.addGeomsToLayer(self.plugIn, currLayer, polygonToLines, None, False, False) == False: self.plugIn.destroyEditCommand() return del polygonGeoms[:] # svuoto la lista # plugIn, layer, geoms, coordTransform , refresh, check_validity if qad_layer.addGeomsToLayer(self.plugIn, currLayer, bufferGeoms, None, False, False) == False: self.plugIn.destroyEditCommand() return if pointGeoms is not None and len(pointGeoms) > 0: PointTempLayer = qad_layer.createQADTempLayer( self.plugIn, QGis.Point) self.plugIn.addLayerToLastEditCommand("Feature buffered", PointTempLayer) if lineGeoms is not None and len(lineGeoms) > 0: LineTempLayer = qad_layer.createQADTempLayer( self.plugIn, QGis.Line) self.plugIn.addLayerToLastEditCommand("Feature buffered", LineTempLayer) if polygonGeoms is not None and len(polygonGeoms) > 0: PolygonTempLayer = qad_layer.createQADTempLayer( self.plugIn, QGis.Polygon) self.plugIn.addLayerToLastEditCommand("Feature buffered", PolygonTempLayer) # aggiungo gli scarti nei layer temporanei di QAD # trasformo la geometria in quella dei layer temporanei # plugIn, pointGeoms, lineGeoms, polygonGeoms, coord, refresh if qad_layer.addGeometriesToQADTempLayers(self.plugIn, pointGeoms, lineGeoms, polygonGeoms, \ None, False) == False: self.plugIn.destroyEditCommand() return self.plugIn.endEditCommand()
def AddGeoms(self, currLayer): bufferGeoms = [] tolerance = QadVariables.get(QadMsg.translate("Environment variables", "TOLERANCE2APPROXCURVE")) for layerEntitySet in self.entitySet.layerEntitySetList: layer = layerEntitySet.layer geoms = layerEntitySet.getGeometryCollection() for geom in geoms: # trasformo la geometria nel crs del canvas per lavorare con coordinate piane xy newGeom = self.layerToMapCoordinates(layer, geom) g = qad_utils.ApproxCurvesOnGeom(newGeom.buffer(self.width, self.segments), \ self.segments, self.segments, \ tolerance) # trasformo la geometria nel crs del layer bufferGeoms.append(self.mapToLayerCoordinates(layer, g)) self.plugIn.beginEditCommand("Feature buffered", currLayer) # filtro le features per tipo pointGeoms, lineGeoms, polygonGeoms = qad_utils.filterGeomsByType(bufferGeoms, \ currLayer.geometryType()) # aggiungo le geometrie del tipo corretto if currLayer.geometryType() == QGis.Line: polygonToLines = [] # Riduco le geometrie in linee for g in polygonGeoms: lines = qad_utils.asPointOrPolyline(g) for l in lines: if l.type() == QGis.Line: polygonToLines.append(l) # plugIn, layer, geoms, coordTransform , refresh, check_validity if qad_layer.addGeomsToLayer(self.plugIn, currLayer, polygonToLines, None, False, False) == False: self.plugIn.destroyEditCommand() return del polygonGeoms[:] # svuoto la lista # plugIn, layer, geoms, coordTransform , refresh, check_validity if qad_layer.addGeomsToLayer(self.plugIn, currLayer, bufferGeoms, None, False, False) == False: self.plugIn.destroyEditCommand() return if pointGeoms is not None and len(pointGeoms) > 0: PointTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Point) self.plugIn.addLayerToLastEditCommand("Feature buffered", PointTempLayer) if lineGeoms is not None and len(lineGeoms) > 0: LineTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Line) self.plugIn.addLayerToLastEditCommand("Feature buffered", LineTempLayer) if polygonGeoms is not None and len(polygonGeoms) > 0: PolygonTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Polygon) self.plugIn.addLayerToLastEditCommand("Feature buffered", PolygonTempLayer) # aggiungo gli scarti nei layer temporanei di QAD # trasformo la geometria in quella dei layer temporanei # plugIn, pointGeoms, lineGeoms, polygonGeoms, coord, refresh if qad_layer.addGeometriesToQADTempLayers(self.plugIn, pointGeoms, lineGeoms, polygonGeoms, \ None, False) == False: self.plugIn.destroyEditCommand() return self.plugIn.endEditCommand()
def offsetGeoms(self, currLayer): featuresLayers = [] # lista di (layer, features) for f in self.featureCache: layer = f[0] feature = f[1] found = False for featuresLayer in featuresLayers: if featuresLayer[0].id() == layer.id(): found = True featuresLayer[1].append(feature) break # se non c'era ancora il layer if not found: featuresLayers.append([layer, [feature]]) layerList = [] for featuresLayer in featuresLayers: layerList.append(featuresLayer[0]) PointTempLayer = None LineTempLayer = None PolygonTempLayer = None self.plugIn.beginEditCommand("Feature offseted", layerList) for featuresLayer in featuresLayers: # filtro le features per tipo pointGeoms, lineGeoms, polygonGeoms = qad_utils.filterFeaturesByType(featuresLayer[1], \ currLayer.geometryType()) # aggiungo le features con geometria del tipo corretto if currLayer.geometryType() == QGis.Line: polygonToLines = [] # Riduco le geometrie in linee for g in polygonGeoms: lines = qad_utils.asPointOrPolyline(g) for l in lines: if l.type() == QGis.Line: polygonToLines.append(l) # plugIn, layer, geoms, coordTransform , refresh, check_validity if qad_layer.addGeomsToLayer(self.plugIn, currLayer, polygonToLines, None, False, False) == False: self.plugIn.destroyEditCommand() return del polygonGeoms[:] # svuoto la lista # plugIn, layer, features, coordTransform, refresh, check_validity if qad_layer.addFeaturesToLayer(self.plugIn, currLayer, featuresLayer[1], None, False, False) == False: self.plugIn.destroyEditCommand() return if pointGeoms is not None and len(pointGeoms) > 0 and PointTempLayer is None: PointTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Point) self.plugIn.addLayerToLastEditCommand("Feature offseted", PointTempLayer) if lineGeoms is not None and len(lineGeoms) > 0 and LineTempLayer is None: LineTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Line) self.plugIn.addLayerToLastEditCommand("Feature offseted", LineTempLayer) if polygonGeoms is not None and len(polygonGeoms) > 0 and PolygonTempLayer is None: PolygonTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Polygon) self.plugIn.addLayerToLastEditCommand("Feature offseted", PolygonTempLayer) # aggiungo gli scarti nei layer temporanei di QAD # trasformo la geometria in quella dei layer temporanei # plugIn, pointGeoms, lineGeoms, polygonGeoms, coord, refresh if qad_layer.addGeometriesToQADTempLayers(self.plugIn, pointGeoms, lineGeoms, polygonGeoms, \ featuresLayer[0].crs(), False) == False: self.plugIn.destroyEditCommand() return self.plugIn.endEditCommand()
def AddGeoms(self, currLayer): bufferGeoms = [] for layerEntitySet in self.entitySet.layerEntitySetList: geoms = layerEntitySet.getGeometryCollection() width = qad_utils.distMapToLayerCoordinates( self.width, self.SSGetClass.getPointMapTool().canvas, layerEntitySet.layer ) tolerance = qad_utils.distMapToLayerCoordinates( QadVariables.get(QadMsg.translate("Environment variables", "TOLERANCE2APPROXCURVE")), self.SSGetClass.getPointMapTool().canvas, layerEntitySet.layer, ) if layerEntitySet.layer.crs() != currLayer.crs(): coordTransform = QgsCoordinateTransform( layerEntitySet.layer.crs(), currLayer.crs() ) # trasformo la geometria else: coordTransform = None for geom in geoms: g = qad_utils.ApproxCurvesOnGeom( geom.buffer(width, self.segments), self.segments, self.segments, tolerance ) if coordTransform is not None: g.transform(coordTransform) bufferGeoms.append(g) self.plugIn.beginEditCommand("Feature buffered", currLayer) # filtro le features per tipo pointGeoms, lineGeoms, polygonGeoms = qad_utils.filterGeomsByType(bufferGeoms, currLayer.geometryType()) # aggiungo le geometrie del tipo corretto if currLayer.geometryType() == QGis.Line: polygonToLines = [] # Riduco le geometrie in linee for g in polygonGeoms: lines = qad_utils.asPointOrPolyline(g) for l in lines: if l.type() == QGis.Line: polygonToLines.append(l) # plugIn, layer, geoms, coordTransform , refresh, check_validity if qad_layer.addGeomsToLayer(self.plugIn, currLayer, polygonToLines, None, False, False) == False: self.plugIn.destroyEditCommand() return del polygonGeoms[:] # svuoto la lista # plugIn, layer, geoms, coordTransform , refresh, check_validity if qad_layer.addGeomsToLayer(self.plugIn, currLayer, bufferGeoms, None, False, False) == False: self.plugIn.destroyEditCommand() return if pointGeoms is not None and len(pointGeoms) > 0: PointTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Point) self.plugIn.addLayerToLastEditCommand("Feature buffered", PointTempLayer) if lineGeoms is not None and len(lineGeoms) > 0: LineTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Line) self.plugIn.addLayerToLastEditCommand("Feature buffered", LineTempLayer) if polygonGeoms is not None and len(polygonGeoms) > 0: PolygonTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Polygon) self.plugIn.addLayerToLastEditCommand("Feature buffered", PolygonTempLayer) # aggiungo gli scarti nei layer temporanei di QAD # trasformo la geometria in quella dei layer temporanei # plugIn, pointGeoms, lineGeoms, polygonGeoms, coord, refresh if ( qad_layer.addGeometriesToQADTempLayers( self.plugIn, pointGeoms, lineGeoms, polygonGeoms, currLayer.crs(), False ) == False ): self.plugIn.destroyEditCommand() return self.plugIn.endEditCommand()