def __init__(self, parent, utils, parcel_number=None, collected_parcel_t_id=None): QgsPanelWidget.__init__(self, None) self.setupUi(self) self.parent = parent self.utils = utils self.logger = Logger() self.app = AppInterface() self.setDockMode(True) self.setPanelTitle( QCoreApplication.translate("ChangesPerParcelPanelWidget", "Change detection per parcel")) self._current_supplies_substring = "" self._current_substring = "" self.utils.add_layers() self.fill_combos() # Remove selection in plot layers self.utils._layers[self.utils._db.names.LC_PLOT_T].removeSelection() self.utils._supplies_layers[ self.utils._supplies_db.names.GC_PLOT_T].removeSelection() # Map tool before activate map swipe tool self.init_map_tool = self.utils.canvas.mapTool() self.active_map_tool_before_custom = None self.btn_identify_plot.setIcon( QIcon(":/Asistente-LADM-COL/resources/images/spatial_unit.png")) self.btn_identify_plot.clicked.connect(self.btn_plot_toggled) # Create maptool self.maptool_identify = QgsMapToolIdentifyFeature(self.utils.canvas) # Set connections self.btn_alphanumeric_query.clicked.connect(self.alphanumeric_query) self.chk_show_all_plots.toggled.connect(self.show_all_plots) self.cbo_parcel_fields.currentIndexChanged.connect( self.search_field_updated) self.panelAccepted.connect(self.initialize_tools_and_layers) self.tbl_changes_per_parcel.itemDoubleClicked.connect( self.call_party_panel) self.initialize_field_values_line_edit() self.initialize_tools_and_layers() if parcel_number is not None: # Do a search! self.txt_alphanumeric_query.setValue(parcel_number) if collected_parcel_t_id is not None: # Search data for a duplicated parcel_number, so, take the t_id into account! self.search_data(parcel_number=parcel_number, collected_parcel_t_id=collected_parcel_t_id) else: self.search_data(parcel_number=parcel_number)
def __init__(self, canvas, layer): QgsMapToolEmitPoint.__init__(self, canvas) self.canvas = canvas self.layer = layer self.identifier = QgsMapToolIdentifyFeature(canvas, layer) self.setCursor(Qt.CrossCursor)
def sel_oldlim(self): # Selection in the canvas self.hide() self.l_edge.removeSelection() self.identify_oldlim = QgsMapToolIdentifyFeature( self.canvas, self.l_edge) self.identify_oldlim.setCursor(QCursor(Qt.PointingHandCursor)) self.identify_oldlim.featureIdentified.connect(self.oldlim_identified) self.canvas.setMapTool(self.identify_oldlim)
def sel_nwvtxnear_rfu(self): # Selection in the canvas if self.sel_nw_vtx: self.hide() self.identify_rfu_vtx = QgsMapToolIdentifyFeature(self.canvas, self.l_vertex) self.identify_rfu_vtx.setCursor(QCursor(Qt.PointingHandCursor)) self.identify_rfu_vtx.featureIdentified.connect(partial(self.rfu_vtx_identified, "near")) self.canvas.setMapTool(self.identify_rfu_vtx) # Message if no line selected in the tablview else: QMessageBox.warning(self, tr_vtxplt_sel_nolinesel_msg[0], tr_vtxplt_sel_nolinesel_msg[1])
def actionIdentifyTriggered(self): # 设置识别工具 self.identifyTool = QgsMapToolIdentifyFeature(self.mapCanvas) self.identifyTool.featureIdentified.connect(self.showFeatures) self.mapCanvas.setMapTool(self.identifyTool) # 设置需要识别的图层 layers = self.mapCanvas.layers() if layers: # 识别画布中第一个图层 self.identifyTool.setLayer(layers[0])
def __init__(self, iface, controller, parent=None): super(DockWidgetQueries, self).__init__(None) self.setupUi(self) self.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea) self.iface = iface self._controller = controller self.logger = Logger() self.app = AppInterface() self.canvas = iface.mapCanvas() self.active_map_tool_before_custom = None self._identify_tool = None self._fill_combos() self.btn_identify_plot.setIcon( QIcon(":/Asistente-LADM-COL/resources/images/spatial_unit.png")) self.tab_results.setTabEnabled( TAB_BASIC_INFO_INDEX, False) # TODO: Remove when queries support LevCat 1.2 self.tab_results.setTabEnabled( TAB_PHYSICAL_INFO_INDEX, False) # TODO: Remove when queries support LevCat 1.2 self.tab_results.setTabEnabled( TAB_ECONOMIC_INFO_INDEX, False) # TODO: Remove when queries support LevCat 1.2 self.tab_results.setCurrentIndex( TAB_LEGAL_INFO_INDEX ) # TODO: Remove when queries support LevCat 1.2 # Set connections self._controller.close_view_requested.connect(self._close_dock_widget) self.btn_alphanumeric_query.clicked.connect(self._alphanumeric_query) self.cbo_parcel_fields.currentIndexChanged.connect( self._search_field_updated) self.btn_identify_plot.clicked.connect(self._btn_plot_toggled) self.btn_query_informality.clicked.connect(self._query_informality) self.btn_next_informal_parcel.clicked.connect( self._query_next_informal_parcel) self.btn_previous_informal_parcel.clicked.connect( self._query_previous_informal_parcel) # Context menu self._set_context_menus() # Create maptool self.maptool_identify = QgsMapToolIdentifyFeature(self.canvas) self._initialize_field_values_line_edit() self._update_informal_controls()
def select_feature(self): self.setVisible(False) # Make wizard disappear # Create maptool self.maptool_identify = QgsMapToolIdentifyFeature(self.canvas) self.maptool_identify.setLayer(self._current_layer) cursor = QCursor() cursor.setShape(Qt.CrossCursor) self.maptool_identify.setCursor(cursor) self.canvas.setMapTool(self.maptool_identify) self.maptool_identify.featureIdentified.connect(self.get_feature_id)
def tool_select_pt_to_plot(self, type_fnc): self.plot_fnc_mode = type_fnc if self.conn and self.rfu and self.rfu.zone: # Prompt message self.iface.messageBar().pushMessage(plot_dif_txt[type_fnc][0], plot_dif_txt[type_fnc][1], Qgis.Info, duration=10) # Pointer to choose the vertex # Set the layer l_vertex current self.iface.setActiveLayer(self.rfu.l_vertex) self.project.layerTreeRoot().findLayer( self.rfu.l_vertex.id()).setItemVisibilityChecked(True) self.canvas.refresh() self.identify_pttoplot = QgsMapToolIdentifyFeature( self.canvas, self.rfu.l_vertex) self.identify_pttoplot.setCursor(QCursor(Qt.WhatsThisCursor)) self.identify_pttoplot.featureIdentified.connect( self.pt_to_plot_identified) self.canvas.setMapTool(self.identify_pttoplot)
def __init__(self, iface, db, qgis_utils, ladm_data, parent=None): super(DockWidgetQueries, self).__init__(None) self.setupUi(self) self.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea) self.iface = iface self._db = db self.qgis_utils = qgis_utils self.ladm_data = ladm_data self.logger = Logger() self.canvas = iface.mapCanvas() self.active_map_tool_before_custom = None self.names = self._db.names self.clipboard = QApplication.clipboard() # Required layers self.restart_dict_of_layers() self._identify_tool = None self.add_layers() self.fill_combos() self.btn_identify_plot.setIcon( QIcon(":/Asistente-LADM_COL/resources/images/spatial_unit.png")) # Set connections self.btn_alphanumeric_query.clicked.connect(self.alphanumeric_query) self.cbo_parcel_fields.currentIndexChanged.connect( self.search_field_updated) self.btn_identify_plot.clicked.connect(self.btn_plot_toggled) # Context menu self._set_context_menus() # Create maptool self.maptool_identify = QgsMapToolIdentifyFeature(self.canvas) self.initialize_field_values_line_edit()
def __init__(self, iface, db, qgis_utils, ladm_data, parent=None): super(DockWidgetQueries, self).__init__(None) self.setupUi(self) self.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea) self.iface = iface self.canvas = iface.mapCanvas() self._db = db self.qgis_utils = qgis_utils self.ladm_data = ladm_data self.selection_color = None self.active_map_tool_before_custom = None self.clipboard = QApplication.clipboard() # Required layers self._plot_layer = None self._parcel_layer = None self._uebaunit_table = None self._identify_tool = None self.add_layers() self.fill_combos() self.btn_identify_plot.setIcon( QIcon(":/Asistente-LADM_COL/resources/images/spatial_unit.png")) # Set connections self.btn_alphanumeric_query.clicked.connect(self.alphanumeric_query) self.btn_clear_alphanumeric_query.clicked.connect( self.clear_alphanumeric_query) self.btn_identify_plot.clicked.connect(self.btn_plot_toggled) # Context menu self._set_context_menus() # Create maptool self.maptool_identify = QgsMapToolIdentifyFeature(self.canvas)
def __init__(self, id, gtotool, config, debug): super(run, self).__init__() self.debug = debug self.gtotool = gtotool self.gtomain = gtotool.gtomain self.info = gtotool.info self.iface = self.gtotool.iface self.act = self.sender() self.act.setCheckable(True) self.sourcefeat = None self.rubbers = [] try: # create rubberband self.rubber = QgsRubberBand(self.iface.mapCanvas(), QgsWkbTypes.LineGeometry) self.rubber.setColor(QColor(Qt.blue)) self.rubber.setLineStyle(Qt.PenStyle(Qt.DashDotLine)) self.rubber.setWidth(2) # get metadata self.sourcelayer = QgsProject.instance().mapLayersByName(config["sourcelayer"])[0] self.targetlayer = QgsProject.instance().mapLayersByName(config['targetlayer'])[0] self.iface.setActiveLayer(self.targetlayer) # start edit if not self.targetlayer.isEditable(): self.targetlayer.startEditing() if not self.sourcelayer.isEditable(): self.sourcelayer.startEditing() # mouse move self.canvas = self.iface.mapCanvas() self.canvas.xyCoordinates.connect(self.mouse_move) # set maptool self.mapTool = QgsMapToolIdentifyFeature(self.canvas) self.mapTool.setLayer(self.sourcelayer) self.canvas.setMapTool(self.mapTool) self.mapTool.featureIdentified.connect(self.feature_Identified) self.mapTool.deactivated.connect(self.reset_tool) self.act.setChecked(True) except Exception as e: self.info.err(e)
def set_canvas(self, map_canvas): self.map_tool = QgsMapToolIdentifyFeature(map_canvas) self.map_tool.setButton(self.map_identification_button) self.canvas = map_canvas
def updateSelectedElectorate(self): self.dockwidget.lblActiveDistrict.setText("Click on the map...") self.featIdentTool = QgsMapToolIdentifyFeature(self.canvas) self.featIdentTool.featureIdentified.connect(self.toolbtnSelectAction) self.featIdentTool.setLayer(self.activeLayer) self.canvas.setMapTool(self.featIdentTool)
def __init__(self): QMainWindow.__init__(self) #self.setWindowFlags(Qt.CustomizeWindowHint) #self.setWindowFlags(Qt.WindowMinMaxButtonsHint) # creating map canvas, which draws the maplayers # setting up features like canvas color self.canvas = QgsMapCanvas() self.canvas.setMinimumSize(550, 700) self.canvas.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) self.canvas.setCanvasColor(Qt.white) self.canvas.setSelectionColor(QColor(255,255,26,200)) self.canvas.enableAntiAliasing(True) self.canvas.setParallelRenderingEnabled(True) # empty list for selected polygons self.selected_features = [] # setting up label settings: object below houses all of them self.label_settings = QgsPalLayerSettings() # object for text settings text_format = QgsTextFormat() text_format.setFont(QFont("Helvetica", 12)) text_format.setSize(7) # setting up a white buffer around the labels buffer_settings = QgsTextBufferSettings() buffer_settings.setEnabled(True) buffer_settings.setSize(0.65) buffer_settings.setColor(Qt.white) text_format.setBuffer(buffer_settings) # label settings: # fieldName = which field is shown as the label (currently Finnish name) # placement = labels can be placed differently in relation to one another # - see documentation for details self.label_settings.setFormat(text_format) self.label_settings.fieldName = "namefin" self.label_settings.placement = 0 self.label_settings.enabled = True # Qmainwindow requires a central widget. Canvas is placed self.setCentralWidget(self.canvas) # creating each desired action self.actionGet = QAction("Return selected and close", self) self.actionPan = QAction("Pan tool", self) self.actionSelect = QAction("Select tool", self) self.actionClear = QAction("Clear selection", self) self.actionCancel = QAction("Cancel and close", self) # these two function as on/off. the rest are clickable self.actionPan.setCheckable(True) self.actionSelect.setCheckable(True) # when actions are clicked, do corresponding function self.actionPan.triggered.connect(self.pan) self.actionSelect.triggered.connect(self.select) self.actionClear.triggered.connect(self.clearSelection) self.actionGet.triggered.connect(self.finishedSelection) self.actionCancel.triggered.connect(self.cancel) # toolbar at the top of the screen: houses actions as buttons # change order here to change their placement on window self.toolbar = self.addToolBar("Canvas actions") self.toolbar.setContextMenuPolicy(Qt.PreventContextMenu) self.toolbar.setMovable(False) self.toolbar.addAction(self.actionGet) self.toolbar.addAction(self.actionPan) self.toolbar.addAction(self.actionSelect) self.toolbar.addAction(self.actionClear) self.toolbar.addAction(self.actionCancel) # link actions to premade map tools self.toolPan = QgsMapToolPan(self.canvas) self.toolPan.setAction(self.actionPan) self.toolSelect = QgsMapToolIdentifyFeature(self.canvas) self.toolSelect.setAction(self.actionSelect) self.toolSelect.featureIdentified.connect(self.selectFeature) self.blocks_flag = False self.selection_rectangle = False # set select tool as default self.select()