PYQGIS獨立應用開發

2021-09-02 00:20:36 字數 3882 閱讀 9217

版本:qgis 3.4.2

開發工具:pycharm

file-->settings...中project interpreter新增python開發環境,選擇‪c:\program files\qgis 3.4\bin\python-qgis.bat,如下圖:

可使用qt designer設計,本文主要實現了工具欄功能(放大、縮小、抓手)

主要講一下main函式實現邏輯,qgs.setprefixpath('qgis', true),這一行比較重要(後邊會用到):

def main():

# 應用入口,使用gui

# 設定,qgis安裝路徑,這裡寫相對路徑,如果是原始碼執行,這行可不寫

qgs.setprefixpath('qgis', true)

# 初始化

qgs.initqgis()

window = mapexplorer()

window.show()

exit_code = qgs.exec_()

# 退出

qgs.exitqgis()

sys.exit(exit_code)

# -*- coding: utf-8 -*-

# @time : 2018/11/26 9:36

# @author : llc

# @file : standalone.py

import os, sys

from qgis.gui import qgsmapcanvas, qgsmaptoolpan, qgsmaptoolzoom, qgsmaptoolidentify

from pyqt5.qtcore import qt

from pyqt5.qtwidgets import qmainwindow, qvboxlayout, qfiledialog

from ui.main_ui import ui_mainwindow

class mapexplorer(qmainwindow, ui_mainwindow):

def __init__(self):

super(mapexplorer, self).__init__()

self.setupui(self)

self.init_mapcanvas()

self.slot_connect()

def slot_connect(self):

self.action_open.triggered.connect(self.action_open_triggered)

self.action_basemap.triggered.connect(self.action_basemap_triggered)

self.action_mark.triggered.connect(self.action_mark_triggered)

self.action_zoomin.triggered.connect(self.action_zoomin_triggered)

self.action_zoomout.triggered.connect(self.action_zoomout_triggered)

self.action_pan.triggered.connect(self.action_pan_triggered)

self.action_identify.triggered.connect(self.action_identify_triggered)

def init_mapcanvas(self):

self.mapcanvas = qgsmapcanvas()

self.mapcanvas.xycoordinates.connect(self.show_lonlat)

self.mapcanvas.setcanvascolor(qt.white)

# self.mapcanvas.show()

layout = qvboxlayout(self.centralwidget)

layout.setcontentsmargins(0, 0, 0, 0)

layout.addwidget(self.mapcanvas)

def loadmap(self, fullpath):

print(fullpath)

self.layer = qgsvectorlayer(fullpath, "shp", "ogr")

qgsproject.instance().addmaplayer(self.layer)

self.mapcanvas.setlayers([self.layer])

self.mapcanvas.setextent(self.layer.extent())

self.mapcanvas.refresh()

def action_open_triggered(self):

fullpath, format = qfiledialog.getopenfilename(self, '開啟資料', '', '*.shp')

if os.path.exists(fullpath):

self.loadmap(fullpath)

def action_basemap_triggered(self):

pass

def action_mark_triggered(self):

pass

def action_zoomin_triggered(self):

self.maptool = qgsmaptoolzoom(self.mapcanvas, false)

self.mapcanvas.setmaptool(self.maptool)

def action_zoomout_triggered(self):

self.maptool = qgsmaptoolzoom(self.mapcanvas, true)

self.mapcanvas.setmaptool(self.maptool)

def action_pan_triggered(self):

self.maptool = qgsmaptoolpan(self.mapcanvas)

self.mapcanvas.setmaptool(self.maptool)

def action_identify_triggered(self):

self.maptool = qgsmaptoolidentify(self.mapcanvas)

self.mapcanvas.setmaptool(self.maptool)

def show_lonlat(self, point):

x = point.x()

y = point.y()

self.statusbar.showmessage(f'經度:,緯度:')

PyQGIS開發者手冊 6 幾何處理

目錄 6 幾何處理 6.1 幾何構造 6.2 訪問幾何 6.3 幾何謂詞與操作 此頁面上的 片段需要匯入以下模組 from qgis.core import qgsgeometry,qgspoint,qgspointxy,qgswkbtypes,qgsproject,qgsfeaturereques...

獨立遊戲開發(索引)

這一篇主要是個索引,方便挑戰及歸納。一 安裝unity 二 如何安裝unity外掛程式 三 安裝編輯器及控制搖桿 四 安裝python環境及配置打表工具 五 控制角色在範圍內移動 六 物件池及模組載入 七 隨機遊走病毒及追蹤角色病毒實現 八 繁殖病毒實現 九 盾道具的生成及觸發實現 十 光罩特效以及...

獨立元件開發打包

元件單獨打包 先在src下面新建hymenucsg.js檔案 然後在build下的webpack.base.conf.dist.js裡面 設定入口檔案hymenucsg src hymenucsg.js csg 最後執行打包命令 npm run dist dev 之後會在dist下面生成元件的js和...