Ejemplo n.º 1
0
    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()
Ejemplo n.º 2
0
   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()
Ejemplo n.º 3
0
   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()
Ejemplo n.º 4
0
    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()