def OnLeftUpCopyLine(self, event): """Left mouse button released - vector digitizer copy feature action """ pos1 = self.Pixel2Cell(self.mouse["begin"]) pos2 = self.Pixel2Cell(self.mouse["end"]) if ( UserSettings.Get( group="vdigit", key="bgmap", subkey="value", settings_type="internal" ) == "" ): # no background map -> copy from current vector map layer nselected = self.digit.GetDisplay().SelectLinesByBox((pos1, pos2)) if nselected > 0: # highlight selected features self.UpdateMap(render=False) else: self.UpdateMap(render=False, renderVector=False) else: # copy features from background map self.copyIds = self.digit.SelectLinesFromBackgroundMap(bbox=(pos1, pos2)) if len(self.copyIds) > 0: color = UserSettings.Get( group="vdigit", key="symbol", subkey=["highlight", "color"] ) colorStr = str(color[0]) + ":" + str(color[1]) + ":" + str(color[2]) dVectTmp = [ "d.vect", "map=%s" % UserSettings.Get( group="vdigit", key="bgmap", subkey="value", settings_type="internal", ), "cats=%s" % ListOfCatsToRange(self.copyIds), "-i", "color=%s" % colorStr, "fill_color=%s" % colorStr, "type=point,line,boundary,centroid", "width=2", ] if not self.layerTmp: self.layerTmp = self.Map.AddLayer( ltype="vector", name=QUERYLAYER, command=dVectTmp ) else: self.layerTmp.SetCmd(dVectTmp) else: if self.layerTmp: self.Map.DeleteLayer(self.layerTmp) self.layerTmp = None self.UpdateMap(render=True, renderVector=True)
def OnLeftUpCopyLine(self, event): """Left mouse button released - vector digitizer copy feature action """ pos1 = self.Pixel2Cell(self.mouse['begin']) pos2 = self.Pixel2Cell(self.mouse['end']) if UserSettings.Get(group='vdigit', key='bgmap', subkey='value', settings_type='internal') == '': # no background map -> copy from current vector map layer nselected = self.digit.GetDisplay().SelectLinesByBox((pos1, pos2)) if nselected > 0: # highlight selected features self.UpdateMap(render=False) else: self.UpdateMap(render=False, renderVector=False) else: # copy features from background map self.copyIds = self.digit.SelectLinesFromBackgroundMap( bbox=(pos1, pos2)) if len(self.copyIds) > 0: color = UserSettings.Get(group='vdigit', key='symbol', subkey=['highlight', 'color']) colorStr = str(color[0]) + ":" + str(color[1] ) + ":" + str(color[2]) dVectTmp = [ 'd.vect', 'map=%s' % UserSettings.Get( group='vdigit', key='bgmap', subkey='value', settings_type='internal'), 'cats=%s' % ListOfCatsToRange( self.copyIds), '-i', 'color=%s' % colorStr, 'fill_color=%s' % colorStr, 'type=point,line,boundary,centroid', 'width=2'] if not self.layerTmp: self.layerTmp = self.Map.AddLayer(ltype='vector', name=QUERYLAYER, command=dVectTmp) else: self.layerTmp.SetCmd(dVectTmp) else: if self.layerTmp: self.Map.DeleteLayer(self.layerTmp) self.layerTmp = None self.UpdateMap(render=True, renderVector=True)