版本: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和...