def run(self):
        """Run method that performs all the real work"""

        # Create the dialog with elements (after translation) and keep reference
        # Only create GUI ONCE in callback, so that it will only load when the plugin is started
        if self.first_start == True:
            self.first_start = False
            self.dlg = FeatureSelectExprSampleDialog(self.iface.mainWindow())

        self.layer = self.iface.activeLayer()
        if (self.layer == None) or (type(self.layer)
                                    is not qgis.core.QgsVectorLayer):
            QMessageBox.about(None, '警告', 'ベクタレイヤを選択してから実行してください')
            return

        # 邪魔にならない場所にダイアログを表示させたいので
        pos = self.canvas.mapToGlobal(QPoint(0, 0))
        self.dlg.move(pos.x(), pos.y())

        # show the dialog
        self.dlg.show()
        # Run the dialog event loop
        result = self.dlg.exec_()
        # See if OK was pressed
        if result:
            # Do something useful here - delete the line containing pass and
            # substitute with your code.
            pass
Beispiel #2
0
    def execSample(self):
        if self.action.isChecked():
            self.layer = self.iface.activeLayer()

            if (self.layer == None) or (type(self.layer)
                                        is not qgis._core.QgsVectorLayer):
                QMessageBox.about(None, '警告', 'ベクタレイヤを選択してから実行してください')
                self.action.setChecked(False)
                return

            self.previousMapTool = self.canvas.mapTool()
            self.canvas.setMapTool(self.mouseEventSample)
            self.canvas.mapToolSet.connect(self.unsetTool)

            self.iface.layerTreeView().currentLayerChanged.connect(
                self.changeLayer)  # アクティブレイヤが変更された時に呼ぶメソッドを登録
            self.mouseEventSample.setLayer(self.iface.activeLayer())
            self.mouseEventSample.featureIdentified.connect(self.editAttribute)
        else:
            self.mouseEventSample.featureIdentified.disconnect(
                self.editAttribute)
            self.iface.layerTreeView().currentLayerChanged.disconnect(
                self.changeLayer)
            self.canvas.mapToolSet.disconnect(self.unsetTool)
            self.canvas.unsetMapTool(self.mouseEventSample)
            self.canvas.setMapTool(self.previousMapTool)
Beispiel #3
0
    def start(self):
        # このプログラム使うときはこの辺を調整してください
        self._llcrs = 4326
        self._xycrs = 2451 # 千葉県のDEMでテストしたので9系になってます。
        self._savedir = 'c:\\users\\〇〇\\desktop\\pic\\' # 横断図の保存先
        self._odanlinespan   = 100 # 横断線の間隔
        self._odanlinelength = 200 # 横断線の片側の長さ
        self._odanpointspan  = 10  # 横断線上のサンプリング間隔

        layer = self.iface.activeLayer()
        if type(layer) != qgis.core.QgsRasterLayer:
            QMessageBox.about(None, 'エラー', 'ラスタレイヤを選択してから実行してください。')
            self.action.setChecked(False)
            self.canvas.setMapTool(self.previousMapTool)  # このツール実行前に戻す
            return
        self.gr = GetRasterPixelValue(layer)

        maptool = RubberBand(self.iface, self.canvas, QgsWkbTypes.LineGeometry)
        maptool.getObject.connect(self.setFeature)

        if len(QgsProject.instance().mapLayersByName('縦断線')) == 0:
            self.ver = self.createTemporaryLayer('縦断線', 'LineString', '&field=key:string')
        else:
            self.ver = QgsProject.instance().mapLayersByName('縦断線')[0]

        if len(QgsProject.instance().mapLayersByName('横断線')) == 0:
            self.hol = self.createTemporaryLayer('横断線', 'Point', '&field=key:string&field=linecount:integer&field=pointcount:integer&field=elev:double')
        else:
            self.hol = QgsProject.instance().mapLayersByName('横断線')[0]

        self.canvas.setMapTool(maptool)
        self.canvas.mapToolSet.connect(self.unsetTool) # このサンプル実行中に他のアイコンを押した場合
Beispiel #4
0
    def setConfig(self):

        self.config["Ptx_BS"] = np.round(self.PtxBS.value(), 2)
        self.config["G_BS"] = np.round(self.G_BS.value(), 2)
        self.config["cable_Loss_BS"] = np.round(self.cableLossBs.value(), 2)
        self.config["sensitivity_BS"] = np.round(self.sensivityBS.value(), 2)
        self.config["G_device"] = np.round(self.G_device.value(), 2)
        self.config["cable_Loss_device"] = np.round(
            self.Cable_Loss_device.value(), 2)
        self.config["Indoor_Loss"] = np.round(self.indoorLoss.value(), 2)
        self.config["Urban_res"] = self.Urbanres.value()
        self.config["heigth_floor"] = np.round(self.HeightbyFloor.value(), 2)
        self.config["deltaFrequencyDL"] = np.round(
            self.deltaFrequencyDL.value(), 2)
        self.config["K"] = np.round(self.Kfactor.value(), 3)
        self.config["Miscelaneous_loss"] = np.round(
            self.miscellaneousLoss.value(), 2)
        index = self.modelPropagation.currentIndex()
        self.config["Model"] = self.models[str(index)]
        self.chooseModel(index)
        QMessageBox.about(self, "Message",
                          "The changes have been saved successfully")
        if self.config["Urban_res"] != 5:
            self.refreshPlot()
        else:
            self.profiletoolcore.plotProfil()
Beispiel #5
0
    def run(self):
        """Run method that performs all the real work"""
        # Create the dialog with elements (after translation) and keep reference
        # Only create GUI ONCE in callback, so that it will only load when the plugin is started
        if self.first_start == True:
            self.first_start = False
            self.dlg = PositionalAccuracyDialog()
            self.dlg.comboBox.currentIndexChanged.connect(self.return_units)

        # Preenchendo o comboBox (principal)
        self.dlg.comboBox.clear()
        #self.dlg.lineEditSize.setText(str(10.0))

        layers = QgsProject.instance().mapLayers().values()
        for layer in layers:
            if layer.type() == QgsMapLayer.VectorLayer:
                self.dlg.comboBox.addItem(layer.name(), layer)

# show the dialog
        self.dlg.show()
        # Run the dialog event loop
        result = self.dlg.exec_()
        # See if OK was pressed
        if result:
            # Do something useful here - delete the line containing pass and
            # substitute with your code.
            #pass
            #Calculate lenghts
            #ly = iface.activeLayer()
            #Input data selection
            index = self.dlg.comboBox.currentIndex()
            selection = self.dlg.comboBox.itemData(index)
            ly = selection

            features = ly.getFeatures()
            d = QgsDistanceArea()
            d.setEllipsoid('WGS84')

            total = 0
            soma2 = 0
            n = 0
            emq = 0

            for f in features:
                geom = f.geometry()
                soma2 = soma2 + d.measureLength(geom)**2
                n = n + 1

            emq = (soma2 / n)**(1 / 2)

            self.dlg.label_size.setText(str(emq))

            QMessageBox.about(None, "Systematic random sampling", str(emq))
Beispiel #6
0
    def exportEvent(self):
        mapName = self.txtMapName.text().strip()
        if mapName == '':
            QtWidgets.QMessageBox.about(self, 'Message',
                                        'Map name is required!')
            return

        exportDst = self.txtExportDestination.text()
        # Lấy địa chỉ đường dẫn xuất và kiểm tra
        if not os.path.exists(exportDst):
            QMessageBox.about(self, "Error", "Invalid path")
            return
        self.txtMapName.setText(mapName)
        self.parent.exportDst = exportDst
        self.parent.mapName = mapName
        self.parent.exportEvent()
    def loadOrders(self):
        ret = True
        if self.request_order is None:
            self.request_order = bbp_order.requestOrders()
            if self.request_order is None:
                QMessageBox.about(self, "NTSOMZ_BBPCatalog",
                                  "Order request Failed")
                return False
        current_orders = None
        current_scenes = None
        current_orders = self.request_order.getOrders()
        print(current_orders)
        if current_orders is None:
            QMessageBox.about(
                self, "NTSOMZ_BBPCatalog",
                "Request failed. Possible reasons:\n 1. Server is down.\n 2. API key is invalid."
            )
            self.scenes = None
            self.orders = None
            ret = False
        else:
            current_orders = [
                checkedDataStructure(False, i) for i in current_orders
            ]
            current_scenes = [
                checkedDataStructure(False, j) for i in current_orders
                for j in i.data.getProducts() if not j.tile_service is None
            ]
            print(current_scenes)

        def crosscheck(ListReference: List[checkedDataStructure],
                       ListInQuestion: List[checkedDataStructure]):
            if ListReference is None:
                return ListInQuestion
            if ListInQuestion is None:
                return None
            for i in ListInQuestion:
                for j in ListReference:
                    if i.data == j.data:
                        i.isChecked = j.isChecked
            return ListInQuestion

        if ret:
            self.orders = crosscheck(self.orders, current_orders)
            self.scenes = crosscheck(self.scenes, current_scenes)
            self.updateTabWidget()
        return ret
Beispiel #8
0
    def showEvent(self, e):
        self.layer = self.iface.activeLayer()
        if type(self.layer) is not qgis.core.QgsVectorLayer:
            QMessageBox.about(None, '警告', 'ベクタレイヤを選択してから実行してください')
            return

        self.execButton.setEnabled(False)
        self.saveButton.setEnabled(False)

        self.layer.removeSelection()

        # コンボボックスにフィールド名を設定する
        self.fieldsBox.clear()
        for s in self.layer.fields():
            self.fieldsBox.addItem(s.name())

        self.oldsetting = QSettings().value("/Qgis/dockAttributeTable")  # 一時退避
Beispiel #9
0
 def _aboutPlugin(self):
     """Show the about dialog"""
     QMessageBox.about(self, "About",
         """<h1>geoCore</h1>
         <p>
         Copyright (C) 2019-2021  Gerrit Bette, T-Systems on site services GmbH<br>
         This program comes with ABSOLUTELY NO WARRANTY.
         This is free software, and you are welcome to redistribute it
         under certain conditions; see
         <a href="https://www.gnu.org/licenses/gpl-3.0-standalone.html">
         https://www.gnu.org/licenses</a> for details.
         </p>
         <p>
         Citation: G. Bette & M. Mennenga 2021:  t-systems-on-site-services-gmbh/geoCore v0.8 (Version v0.8).
         Zenodo. <a href=" http://doi.org/10.5281/zenodo.4548887"> http://doi.org/10.5281/zenodo.4548887</a>
         </p>
         <p>
         <a href="https://github.com/t-systems-on-site-services-gmbh/geoCore/blob/master/geoCore/help/usage.md">
         Manual</a>
         </p>
         """)
Beispiel #10
0
    def run(self):
        """Run method that performs all the real work"""

        # 設定ダイアログ
        self.initDialog = initDialog(self.iface, self.iface.mainWindow())
        self.initDialog.show()

        result = self.initDialog.exec_()
        if result:
            layerName = self.initDialog.layerName
            userName = self.initDialog.userName

            if layerName == '':
                QMessageBox.about(self.iface.mainWindow(), "警告",
                                  "編集するレイヤ名を入力してください")
                return

            # プラグイン実行
            pos = self.canvas.mapToGlobal(QPoint(0, 0))
            self.dlg = AddFeatureSampleDialog(self.iface, layerName, userName,
                                              self.iface.mainWindow())
            self.dlg.move(pos.x(), pos.y())
            self.dlg.show()
Beispiel #11
0
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setupUi(self)
        self.first_flag = True
        self.setWindowTitle('PyQGIS')
        # 调整窗口大小
        self.resize(800, 600)
        # 初始化图层树
        vl = QVBoxLayout(self.dockWidgetContents)
        self.layerTreeView = QgsLayerTreeView(self)
        vl.addWidget(self.layerTreeView)
        # 初始化地图画布
        self.mapCanvas = QgsMapCanvas(self)
        hl = QHBoxLayout(self.frame)
        hl.setContentsMargins(0, 0, 0, 0)
        hl.addWidget(self.mapCanvas)

        # 建立桥梁
        self.model = QgsLayerTreeModel(PROJECT.layerTreeRoot(), self)
        self.model.setFlag(QgsLayerTreeModel.AllowNodeRename)
        self.model.setFlag(QgsLayerTreeModel.AllowNodeReorder)
        self.model.setFlag(QgsLayerTreeModel.AllowNodeChangeVisibility)
        self.model.setFlag(QgsLayerTreeModel.ShowLegendAsTree)
        self.model.setAutoCollapseLegendNodes(10)
        self.layerTreeView.setModel(self.model)
        self.layerTreeBridge = QgsLayerTreeMapCanvasBridge(
            PROJECT.layerTreeRoot(), self.mapCanvas, self)
        # 显示经纬度
        self.mapCanvas.xyCoordinates.connect(self.showLngLat)

        # 打开工程
        self.actionOpen.triggered.connect(self.actionOpenTriggered)
        # 退出程序
        self.actionQuit.triggered.connect(self.close)

        # 地图工具
        # TODO:放大、缩小没有图标
        self.actionPanTriggered()
        self.actionPan.triggered.connect(self.actionPanTriggered)
        self.actionZoomin.triggered.connect(self.actionZoomInTriggered)
        self.actionZoomout.triggered.connect(self.actionZoomOutTriggered)
        self.actionIdentity.triggered.connect(self.actionIdentifyTriggered)

        # 图层
        self.actionShapefile.triggered.connect(self.actionShapefileTriggered)
        self.actionCsv.triggered.connect(self.actionCsvTriggered)
        self.actionPostGIS.triggered.connect(self.actionPostGISTriggered)
        self.actionWFS.triggered.connect(self.actionWFSTriggered)

        self.actionGeotiff.triggered.connect(self.actionGeotiffTriggered)
        self.actionXYZ.triggered.connect(self.actionXYZTriggered)

        # 绘图工具
        self.actionPoint.triggered.connect(self.actionPointTriggered)
        self.actionLine.triggered.connect(self.actionLineTriggered)
        self.actionRectangle.triggered.connect(self.actionRectangleTriggered)
        self.actionPolygon.triggered.connect(self.actionPolygonTriggered)

        # 关于Qt
        self.actionAboutQt.triggered.connect(
            lambda: QMessageBox.aboutQt(self, '关于Qt'))
        self.actionAbout.triggered.connect(
            lambda: QMessageBox.about(self, '关于', 'PyQGIS二次开发'))

        # self.actionPan.triggered.connect(self.actionPanTriggered)
        # self.actionIdentify.triggered.connect(self.actionIdentifyTriggered)

        # 图层右键菜单
        self.customMenuProvider = CustomMenuProvider(self.layerTreeView,
                                                     self.mapCanvas)
        self.layerTreeView.setMenuProvider(self.customMenuProvider)
 def showAbout(self):
     about = open(os.path.join(BASE_DIR, 'ABOUT.html')).read().format(version='.'.join(map(str, VERSION)))
     QMessageBox.about(self.iface.mainWindow(), 'ProMaIDes Toolbox', about)