Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QGIS Python 3.34.10

基于 QGIS final-3_34_10 源码和 PyQGIS 的独立桌面应用,运行于 OSGeo4W。应用层采用对应 C++ 文件的名称和职责;已经绑定的 core/gui 类直接使用原生实现。GPS 界面入口已排除。当前仍是逐步移植版本,未完成项见 功能移植清单.md,不能视为原版 QGIS 的完整替代品。

启动

本机环境已经可运行。在项目目录执行:

.\run-qgis-python.cmd

默认使用 C:\OSGeo4W\apps\qgis-ltr,要求实际版本为 3.34.10。OSGeo4W 在其他位置时,先设置 $env:OSGEO4W_ROOT。不要用普通系统 Python 启动。可将工程文件路径作为启动参数。

如果界面自定义隐藏了需要的入口,可用 .\run-qgis-python.cmd --nocustomization(或 -C)跳过本次自定义,然后进入自定义窗口调整配置。此参数不会删除配置。指定外部配置使用 .\run-qgis-python.cmd --customizationfile "C:\path\customization.ini"(或 -z);与 -C 同时使用时,本次跳过自定义。

哪些文件需要编译

输入 工具和输出 何时执行
images/images.qrc pyrcc5 → images/images_rc.py 首次取得代码、资源变更后必须执行
src/ui/qgisapp.ui pyuic5 → src/ui/ui_qgisapp.py 可选;存在编译结果时优先加载,修改 UI 后须重新编译
src/ui/qgsrastercalcdialogbase.ui pyuic5 → src/ui/ui_qgsrastercalcdialogbase.py 同上
src/ui/qgsmeasurebase.ui 运行时 uic.loadUi 无需预编译
src/ui/qgsstatisticalsummarybase.ui 运行时 uic.loadUi 无需预编译;已复制原版 UI,并调整 Python 控件导入
src/ui/qgsannotationwidgetbase.uiqgstextannotationdialogbase.uiqgsformannotationdialogbase.ui 运行时 uic.loadUi 旧式注记共用/内容属性,SVG 与 HTML 按原版共用表单;无需预编译
src/ui/annotations/qgsannotationlayerpropertiesbase.uisrc/ui/qgsprojectlayergroupdialogbase.ui 运行时 uic.loadUi 注记图层属性与嵌入选择树;无需预编译
src/ui/annotations/qgsannotationitempropertieswidgetbase.ui 运行时 uic.loadUi 注记项属性容器;内部类型专用控件使用 QGIS 原生实现,无需预编译
src/ui/layout/qgsreport*.ui 运行时 uic.loadUi 原版报表组织器及三套章节配置表单,无需预编译
src/ui/qgsdxfexportdialogbase.uisrc/ui/qgsnewspatialitelayerdialogbase.ui 运行时 uic.loadUi DXF 与 SpatiaLite 原版窗口;连接控件使用 Python 构造适配;无需预编译
src/ui/mesh/qgsmeshcalculatordialogbase.uiqgsnewmeshlayerdialogbase.ui 运行时 uic.loadUi 网格计算与新建网格原版窗口;无需预编译
src/ui/qgsdecorationgriddialog.uiqgsdecorationlayoutextentdialog.ui 运行时 uic.loadUi 网格和布局范围装饰的原版表单;无需预编译
src/ui/qgscustomizationdialogbase.uiresources/customization.xml 原版表单运行时加载,XML 直接读取 界面自定义窗口与控件目录;文件已放入项目,无需 pyuic/pyrcc
src/ui/qgsoptionsbase.uiqgsrenderingoptionsbase.ui 运行时加载的选项草稿 选项移植按用户要求暂停,未纳入本轮验收,无需编译

脚本已经选用 OSGeo4W 自带的 PyQt5,不需要另外安装 Qt/PyQt:

.\scripts\build-resources.cmd
.\scripts\build-ui.cmd
.\run-qgis-python.cmd

src/app/*.py 是手写的控制逻辑,不经过 pyuic/pyrcc。运行时引用的原生浏览器、属性表、渲染器等控件,也不需要把它们在 QGIS 中的所有 .ui 重新编译。已有的 src/ui/qgisapp.py 文件不作为这里的生成目标。

从原版复制资源

资源现已放入本项目。换一份源码时,可设置 $env:QGIS_SOURCE_ROOT 后,在 OSGeo4W Python 中运行 scripts/sync_resources.pyscripts/sync_upstream.py,再执行上述两个编译脚本。

  • sync_resources.py 保持 images/images.qrc 引用的全部相对路径,复制图标,并复制 images/splash/splash.png
  • sync_upstream.py 导入主窗口、栅格计算器和测量的 UI;移除主窗口 GPS/GPX 项;把 Qt Designer 的 QGIS 自定义控件导入改成 qgis.gui
  • 图标不仅来自 .uiQgisApp.setTheme() 还落实 C++ 的动态图标赋值,资源包内保留其映射作为后备。

这轮功能的使用

“设置 → 界面自定义”支持菜单、工具栏及组合按钮的子动作、面板、状态栏、浏览器来源和对话框控件。启用后可搜索对象名称/显示名称,展开、折叠、全选,导入或导出原版路径格式的 INI。应用/确定保存配置,重启后生效;重置恢复上次应用的配置,取消丢弃尚未应用的修改。Options 仍按要求暂停。

自定义窗口保持打开时,点击“捕获”或按 Ctrl+M,再点击主窗口工具按钮、菜单项或对话框控件,可定位到树并切换其勾选状态。捕获期间点击不会执行原操作,临时高亮不会改写控件样式;关闭窗口退出捕获。浏览器自定义始终保留 GPS 排除。

插件可以通过 iface.insertAddLayerAction(action)iface.removeAddLayerAction(action) 注册或移除“添加图层”菜单动作。原版 mActionAddLayerSeparator 是隐藏插入锚点,本身没有点击操作,清单已单独注明。

“视图 → 装饰”已接入网格和布局范围。网格支持线/标记、X/Y 间隔和偏移、从画布范围或当前栅格像元获取间隔、坐标标注方向及文本格式;画布坐标单位改变时会关闭旧网格,请重新设置间隔。布局范围显示当前打开的布局设计器中的地图范围与名称,支持旋转、坐标转换、符号和文本设置,关闭设计器后相应范围消失。两项均保存到工程,并参加地图 PNG/PDF 导出。

高级数字化工具栏的“修剪/延伸要素”:当前线/面图层进入编辑状态,开启线段捕捉并设置参与捕捉的图层,先点击限制边,再点击待修改边。相交时修剪鼠标所在一侧,不相交时延伸较近端点;移动鼠标查看预览,右键/Esc 取消。支持 Z/M、多部件、跨 CRS 限制边及拓扑节点。要素修改可撤销;限制边位于另一个可编辑图层时,该图层新增的拓扑节点由其自身撤销栈管理。

  • 高级数字化:激活可编辑矢量图层后,使用 CAD 开关、移动/复制移动、分割、重塑、添加/删除环及部件。绘制工具左键加点、右键结束;操作进入图层撤销栈。CAD 控件是否可用仍服从原生工具及坐标系限制。
  • 测量:属性工具栏的测量下拉菜单提供距离、面积、角度和方位角。结果在独立窗口中实时更新,可换单位、复制、切换椭球/平面计算、撤销节点及重新开始;右键结束保留结果。
  • 图层面板:样式、添加组、地图主题、图例过滤、表达式过滤、展开、折叠、移除。地图主题随工程保存。F7 打开图层样式面板。
  • 属性表和 Python 控制台:各自工具栏中的停靠按钮在 Dock 和独立窗口之间切换;属性表保留同一份 QgsDualView 和筛选状态。
  • 选择工具栏:矩形、多边形、自由手绘、半径选择;多边形左键加点、右键结束,自由手绘单击开始/结束,半径单击圆心后单击边缘或输入数值回车。Esc 取消。区域选择 Shift 添加、Ctrl 移除、Shift+Ctrl 取交集、Alt 仅完全包含;单击选择时 Shift/Ctrl 切换选中状态。
  • 统计摘要:视图菜单或属性工具栏打开;选择图层、字段或表达式,可仅统计选中要素。数值、文本、日期使用 QGIS 原生统计类,后台计算可取消,结果可复制;选项菜单可切换统计量和是否跟随当前图层。
  • 顶点编辑器:在顶点工具下拉菜单或面板菜单打开。使用顶点工具点击可编辑要素后,表格显示图层 CRS 的 X/Y/Z/M;双击坐标修改、使用图层撤销/重做,表格选择可高亮并定位顶点。当前尚不包含原版完整的多顶点/拓扑编辑。
  • 地图提示:属性工具栏开启后悬停要素,显示图层属性中配置的 HTML 提示或显示表达式;移动、切换图层、缩放和关闭提示会取消旧提示。

这一批 Python 文件直接运行,无需 pyuic/pyrcc。统计摘要 UI 也在运行时加载;已有资源包不需要因本批改动重新编译。

新增 Action 的使用

  • 导出工程到 DXF:勾选空间矢量图层;双击“输出图层名称字段”可按字段值拆分 CAD 图层。选择符号模式、比例、CRS、编码及输出文件后导出;也可使用地图主题、当前范围、强制二维和 MText 开关。
  • 新建 SpatiaLite 图层:选择已有连接,或点数据库按钮创建/选择文件。填写表名、几何类型、Z/M、CRS,添加字段后确定。默认主键可选;创建后自动加载。选择已有数据库只添加图层,重名表报错,不替换数据库或原表。
  • 网格计算器:先在图层面板选中有效且未编辑的网格图层,再打开计算器。双击数据集名或运算按钮填入表达式,填写唯一结果组名,选择时间及范围/多边形掩膜;可选择虚拟组或 MDAL 文件输出,结果加入原网格的数据集组。已有输出文件需换新文件名。
  • 新建网格图层:选择输出格式/文件、名称与 CRS,可创建空框架,或勾选初始化并选择工程中的网格/外部文件复制框架。此功能不复制原数据集组,空网格的数字化编辑仍待移植。
  • 当前编辑:数字化工具栏的“当前编辑”下拉包含保存、回滚、取消及对应的全部图层操作。前三项使用图层面板选中集;“保存图层编辑”仍操作当前图层。
  • 填充环:激活可编辑多边形图层。左键绘制、右键完成后打开属性表单;Ctrl+右键直接添加。Shift+左键在现有内环内点击可填充该环。取消表单会恢复原几何,填充操作可整步撤销。
  • 粘贴为新矢量图层:先复制选中要素,再从“编辑 → 粘贴为”选择新矢量图层,使用原生导出对话框。后台任务显示在状态栏,可查看进度或取消。原“图层另存为”也使用该导出流程。
  • 运行要素动作:在图层属性中配置画布作用域动作,从属性工具栏的动作下拉选择默认动作,然后点击地图要素。支持点击坐标表达式及 Python 动作;未配置动作时给出提示。
  • 新建注记图层:创建并置顶原生注记图层。注记工具栏的新建下拉可打开“主注记图层属性”,普通注记图层也可打开属性,调整名称、CRS、比例范围、不透明度、混合和绘制效果,加载/保存 QML。样式菜单新增添加、删除、重命名和切换样式;插件注册的图层属性页面按工厂的位置提示插入,支持同步和应用。本次扩展待统一运行调试。
  • 新式注记工具栏:多边形、线、标记、点文字、沿线文字五种原生创建工具已放入。标记/点文字单击创建,线和多边形左键加点、右键结束;当前选中注记图层时写入该层,否则写入主注记图层。完成后在图层样式面板修改内容、文字和符号;“修改注记”提供移动、节点编辑和删除。
  • 文本、SVG、HTML、表单注记:从注记工具栏下拉选择,地图空白处点击创建,双击或右键编辑内容;拖动锚点/边框移动,拖动边缘调整大小,右键或 Delete 删除,Esc 取消当前拖动。表单注记选择 Qt Designer .ui,由原生 QGIS 读取,不要把它编译成 Python 再选择。
  • 注记属性的“实时更新”开启后会立即修改并隐藏取消按钮;关闭时可用应用/确定/取消。工程保存会保存四种注记;它们属于旧式注记,与标注工具栏、注记图层中的新式注记项不同。
  • 嵌入图层和组:选择外部 QGS/QGZ,再选择要嵌入的组。组内图层保留对源工程的引用;当前单图层分支未移植,选择树中明确禁用并说明原因。
  • 状态栏:坐标右侧按钮切换范围显示;比例尺可选预设值或输入;锁按钮控制比例尺锁定。放大镜和旋转框带原生恢复默认/清零按钮,CRS 按钮进入工程坐标系页面。

选项对话框按要求暂停。只保留 功能移植清单.md 一份清单,三列为原版 Action、名称、状态;软件帮助菜单直接打开这份文件。

“视图 → 装饰 → 比例尺”可设置向上/向下刻度、条形或方框、长度取整、文字格式、填充/轮廓和位置边距;画布与地图图片/PDF 导出使用原生比例尺绘制。图片装饰可填写 HTTP(S) URL、base64:data: URI;网络图片异步加载,右键路径输入框可“将当前图片嵌入工程”或重新下载。本批代码只做语法及接口检查,未运行界面验收。

形状数字化的 17 个动作均已接入:5 种圆、4 种椭圆、4 种矩形、3 种正多边形和半径圆弧,按原版分组下拉。选择可编辑线/面图层;普通两点形状左键一次、右键确定末点,三点形状左键两次、右键确定末点。移动时预览,Esc 取消,退格退点;正多边形边数在画布输入控件中调整。模式下拉可切回折线/曲线/流式捕获。也可先启用原生注记面捕获,再选择形状工具。

切线圆需开启线段捕捉:三切线圆左键选前两条切线,右键选第三条;两切线圆左键选两条切线,输入半径,移动选择候选圆,右键完成。半径圆弧依次左键起点、终点,调整半径、移动选择弧侧,再左键确认这一段;可连续绘弧,右键完成已确认部分。圆心辅助标记、复杂 Z/M、拓扑与环编辑组合仍需完善。

网孔动态动作已接入 12 项。选择网孔图层后使用切换编辑;双击增加顶点,单击选顶点,Ctrl 左键依次选已有顶点、右键构面。多边形选择的 Shift 为添加、Ctrl 为移除。面操作先通过表达式(如 $face_area > 0)选面,再切换“数字化网孔元素”,在画布右键菜单执行。坐标变换使用原版停靠窗口;保存、撤销和丢弃均接入主窗口。

网孔“沿几何强制约束”:左键确定折线各点,右键执行;未开始绘线时右键拾取已有线或面边界。退格删除末点、Esc 取消。按钮下拉设置相交边加点、Z 插值来源、容差及单位,沿用原版设置键。约束调用原生网孔编辑器,可使用主窗口撤销。此批交互代码未执行界面验收。

“修改注记”:悬停显示边框与节点,重叠时优先拾取同距离下 Z 顺序较高的注记。第一次点击选中,再点击主体或节点开始移动,移动鼠标查看预览,再点击确认;Esc 或右键取消。双击/右键添加节点,移动节点时 Delete 删除该节点,空闲选中状态 Delete 删除整项。方向键默认移动 5mm,Shift 为 20mm,Alt 为 1 像素,支持旋转画布。Web 工具栏由插件提供按钮,宿主支持插件图标、控件及移除。

新建报表:选中树中的父章节,从加号菜单添加静态布局或字段分组。字段分组选择矢量图层、字段和排序方向,可独立启停页眉/正文/页脚及设置无匹配要素时是否显示页眉页脚。父分组关闭正文时按字段值分组,子分组按父字段值筛选;正文开启时逐要素生成布局。通过编辑按钮设计对应页面;工具栏可上下移动、升降级、复制章节,导出整个报表为 PDF,工程保存保留分组配置与布局。

要素动作:在按钮下拉中选择当前图层的画布动作或插件单要素动作,图标和提示同步显示默认项,再点击地图要素执行。仅编辑状态可用的动作会自动过滤;多个重叠要素可单选或全部执行。图层动作可在图层属性中配置。

高程剖面:独立图层树支持勾选显示、拖动排序、双击配置高程、移除及重新添加,并显示高程符号与属性提示。支持绘制、选中线、地图拾取线三种来源;左右偏移按两倍容差移动曲线。点选/框选识别结果进入主窗口识别面板;测量依次点击两个剖面点,右键清除,显示距离、高差和总长度,缩放后测量线裁剪到绘图区。地图上同步显示剖面线、容差范围及悬停位置。X 轴缩放支持点击、框选及 Alt 点击缩小;单位菜单补齐原版十种单位。图片/PDF 导出使用原版表单设置距离/高程范围、标签与网格间隔;PNG 可设像素尺寸,PDF 可设纸型、方向、自定义尺寸、单位及宽高比例锁定。三维要素、二维剖面、距离/高程表使用原生后台任务导出。新增代码待统一运行调试。

形状数字化:生成曲线按目标图层补齐或移除 Z/M 维度;矩形和正多边形采用首个非默认捕捉高程。半径圆弧在确定端点、选择弧侧时按住 R 显示圆心及半径辅助,松开隐藏。三个新增剖面导出 .ui 已放入 src/ui,运行时加载,无需手动执行 pyuic/pyrcc。

形状共用捕获已补齐:可以先选“添加环”“填充环”或“添加部件”,再选择形状按钮,完成后仍交给对应工具处理;添加部件保留完整几何的 Z/M。半径圆弧可接着已经捕获的线段继续绘制;两切线圆显示圆心候选,退格/取消同步清除辅助图形。新增要素传入捕捉表达式上下文,并在开启拓扑编辑时补齐同图层及相关编辑图层的公共节点。

“设置 → 自定义投影”已使用原版 CRS 编辑表单,可编辑 WKT/PROJ 定义、校验、增加、重命名及批量删除;点击应用/确定才写入原生用户 CRS 注册表,取消放弃未应用的修改。入口暂由独立窗口承载,整体 Options 仍保持暂停。表单已随代码放入项目,无需手动编译或复制。

剖面图层树:按高程是否启用过滤图层;矢量图层跟随分类/分级样式时显示对应图例。勾选状态随图层属性保存,重新打开剖面时恢复;初始顺序按原版图层类型排列。可在剖面内移动排序,从主图层树按住 Ctrl 复制拖入图层或组,自动启用可用图层的高程并去重;跨树移动会被拒绝。

网孔顶点移动:数字化状态先选顶点(Shift 加选),再点击已选顶点开始移动,再左键确认;右键/Esc 取消。绿色顶点预览表示原生拓扑校验通过,红色表示不可提交;移动保持 Z 不变,确认后可撤销。预览期间不修改编辑网孔,图层切换、工具切换或其他编辑会取消正在进行的移动。

网孔数字化新增:选中至少三个合适顶点后,右键执行 Delaunay 三角化;选中公共边两端点后,右键可翻转边或合并两侧面,按原生拓扑条件启用。Ctrl 点击已有顶点构建新面时显示有效/无效预览;Backspace 回退、Esc 取消。Z 输入框显示选中顶点的平均值,输入后 Enter 批量修改并支持撤销。Ctrl+Delete 删除顶点并填洞,Ctrl+Shift+Delete 删除顶点及相邻面,Shift+Delete 删除所选面。直接悬停拾取边/面等未完成分支仍保留部分实现状态。

DWG/DXF 导入:使用原版窗口,选择源图纸、CRS 和新的 .gpkg 文件名后导入;可预览、选择 CAD 图层、设置可见性,再分组或合并加载。已有包可用“加载图层”重新打开,导入不覆盖已有文件。DXF 支持展开块、展开并保留插入点、仅保留块插入点三种模式;保留读取到的 XYZ、原始属性与 OGR 样式。ASCII DXF 保留图层关闭/冻结/锁定标志,关闭/冻结默认不显示,可重新勾选显示;锁定标志保存在包中,不限制导入后的 QGIS 编辑。文字支持字体、粗斜体、下划线、删除线、对齐和旋转;线条保留虚线、端点/连接样式及纸面/地图单位。加载原版 CAD 包时适配多段线宽度、TEXT/MTEXT 对齐与行距。样式参数按 GDAL Feature Style 映射到原生 QGIS 符号与标注。曲线、复杂块/填充/特殊文字及二进制图层状态仍未完整移植;本机 CAD 驱动仅支持 DWG R2000,其他版本可手动转换为 DXF 后导入,该 Action 保留部分实现。

网孔坐标变换:勾选坐标轴、输入表达式后先点预览,结果有效才能应用;表达式、选区或网孔数据变化会清除旧预览并禁用应用。“导入坐标”是持续开关,开启后随单个选中顶点更新表达式;多选时清空,关闭时也清空。坐标小数位数沿用工程设置。完整的面/边变换预览仍未完成。

清单涵盖主窗口 .ui 和已普查的 C++ 动态动作,启动应用或打开清单时自动更新。状态按各 Action 的具体缺项核定,不再根据备注中的“部分”等词猜测。用 OSGeo4W Python 运行 scripts/sync_toolbar_actions.py 可从原版源码更新动态来源表;scripts/update_porting_status.py 可手动刷新同一份清单。动态来源扫描还不是所有 QGIS 模块的完整普查。

检查

网孔编辑新增功能:.\run-qgis-python.cmd --mesh-edit-test,报告为 output/mesh-edit-test.json;覆盖三角化、翻转/合并公共边、新面预览、Z 修改、原版删除快捷键、撤销、退出清理,以及坐标变换的预览/应用状态与坐标导入开关。CAD 导入:.\run-qgis-python.cmd --dwg-import-test,报告为 output/dwg-import-test.json;覆盖原版 Action、真实 DXF/GeoPackage、XYZ/CRS/属性、筛选/预览/分组/合并、工程恢复、三种块模式、取消和目标文件保护;还检查图层状态/中文名、样式字段与原版 CAD 包的多段线和标注配置。两项本机检查通过;新增原版 CAD 表单运行时加载,无需 pyuic/pyrcc。

界面自定义集中检查:.\run-qgis-python.cmd --customization-test,报告为 output/customization-test.json。使用隔离 INI 检查原版窗口、六类配置树、搜索、应用/重置/取消、导入导出、真实点击捕获和 Ctrl+M、组合按钮默认动作切换、下一次启动配置应用及显式跳过、动态对话框控件和插件菜单插入/移除;本机检查通过,未修改用户自定义配置。

网格/布局范围装饰使用 .\run-qgis-python.cmd --decoration-test,修剪/延伸使用 .\run-qgis-python.cmd --trim-extend-test。两项集中检查已在本机 OSGeo4W QGIS 3.34.10 通过,报告为 output/decoration-test.jsonoutput/trim-extend-test.json:覆盖原版 Action 点击、实际装饰绘制/工程恢复/导出,以及原生线段捕捉、两侧修剪/延伸、Z/M、多部件、面、跨 CRS、拓扑节点、撤销和取消。

最近的剖面/注记属性批次只集中完成语法解析、OSGeo 模块导入和所用接口存在性检查,记录在 output/profile-properties-source-check.json;尚未进行该批次的交互和导出结果验收。清单中的“已接入,待调试”表示代码已经接入、尚待运行验收。

此前剖面/形状代码检查记录在 output/profile-shape-source-check.json;形状交互与 Z/M 检查现已由下述形状专项补充,剖面导出仍待统一验收。

本次形状专项 .\run-qgis-python.cmd --shape-test 已通过:17 个按钮、14 个基础形状的 PolygonZM 捕获、添加环/填充环/添加部件及撤销、圆弧续接/R 键辅助、跨 CRS 圆、注记形状及拓扑公共节点。结果为 output/shape-test.json。自定义投影专项 tests/src/python/test_qgisapp_customprojection.py 在隔离配置目录检查原生注册表新增/修改/删除、重复应用、WKT/PROJ 切换、无效定义和取消,结果为 output/custom-projection-test.json

剖面树/网孔移动集中检查:使用 OSGeo Python 运行 tests/src/python/test_qgisapp_profilemesh.py,结果为 output/profile-mesh-test.json。已检查图层过滤、分类图例、勾选状态恢复、跨树复制/拒绝移动及内部排序许可,以及真实编辑网孔的移动预览、坐标/Z 保持、撤销、非法拓扑拒绝和取消;桌面鼠标完整流程仍待验收。

本批集中检查:.\run-qgis-python.cmd --remaining-actions-test,报告为 output/remaining-actions-test.json。覆盖 17 项形状捕获及本批网孔窗口、选择、变换、细化/分割/删除、撤销、2DM 保存/重读与索引。仅形状可用 --shape-test。两个原版网孔 UI 已复制并改好 Python 控件导入,运行时加载,无需 pyuic/pyrcc 或手动复制资源,重新启动即可。

四个工具栏相关专项:.\run-qgis-python.cmd --toolbar-test,报告为 output/toolbar-test.json。现有检查覆盖五种原生注记创建、文字属性、工程恢复与 Web 扩展接口。

部分实现收尾专项:.\run-qgis-python.cmd --partial-actions-test,报告为 output/partial-actions-test.json。在 QGIS 3.34.10 中检查注记悬停/重叠拾取、移动和取消、节点增删、旋转画布方向键;报表嵌套分组与排序、章节重排/复制、PDF 和 QGZ 重开;要素动作默认菜单、插件回调上下文与编辑状态过滤。

DXF、SpatiaLite 与网格专项检查:.\run-qgis-python.cmd --data-actions-test,结果写入 output/data-actions-test.json,实际输出数据路径记在报告中。新增代码与原版 UI 已放入项目,重启即可,无需额外复制文件或运行 pyuic/pyrcc

本批注记和嵌入检查:.\run-qgis-python.cmd --annotation-test,结果写入 output/annotation-test.json。上述新增 UI 和 Python 已放入项目,直接重新启动即可,本批不需要运行 pyuic/pyrcc 或手动复制图标

标注工具栏的九个动作均已接入。固定:Shift 解除、Ctrl 切换;显隐:点击标注隐藏,点击要素恢复,Shift 框选隐藏。移动和旋转均为两次点击,右键/Esc 取消、Delete 清除覆盖;旋转 Ctrl 按 15° 步进,引线端点移动 Shift 约束角度。没有位置等字段时,使用原生辅助存储对话框选择唯一键,再创建相应辅助字段。

“高亮固定标注”只给已固定对象加高亮,不会自动固定普通标注;请先固定或移动一个标注再开启查看。相邻的“显示未放置标注”用于显示因冲突等原因无法正常放置的标注,默认红色;没有未放置标注时画面不会改变,它不代替图层的标注启用开关。

修改标注使用原版表单,右键控件可清除当前要素的覆盖值;应用会立即保存到编辑缓冲区,随后取消不会撤回已应用的修改,可使用撤销。点符号旋转/偏移要求当前可编辑点图层已把符号的角度/偏移绑定到字段;两次点击完成,右键/Esc 取消。

这批 Python 文件直接运行。src/ui/labeling/qgslabelpropertydialogbase.ui 已从 3.34.10 源码同步,只有自定义控件导入路径改为 qgis.gui;运行时通过 uic.loadUi 加载,不需要手动 pyuic 或 pyrcc,已有图标资源直接复用。选项继续暂停。

只检查本批标注和点符号功能,可运行:

.\run-qgis-python.cmd --labeling-test

结果写入 output/labeling-test.json。完整冒烟检查仍使用以下命令:

.\run-qgis-python.cmd --smoke-test

检查本项目的实现,包括实际鼠标捕获内环、几何编辑/撤销、四种测量数值、四种选择方式、半径数值输入、跨 CRS 选择、后台统计、顶点坐标/撤销、地图主题、图例过滤、属性表停靠、控制台停靠、栅格计算像元及工程保存。结果和截图在 output。冒烟检查使用单独的设置目录。

在此 OSGeo4W 环境中已完成运行检查;服务器连接、第三方插件及各类真实数据格式仍需用你的实际数据验收。Processing 提供者能否执行取决于其依赖是否安装和配置,例如 GRASS。可手动完成这类环境配置。

地理配准现已接入原版窗口的 24 个 Action:打开栅格/矢量、控制点增删移动/坐标拾取/保存加载、缩放历史与双向画布联动、图层属性、直方图拉伸、变换设置及实际输出。栅格支持线性、Helmert、一至三阶多项式、TPS、世界文件及独立 GDAL Python 脚本;矢量使用原生变换器输出 GeoPackage。运行 .\run-qgis-python.cmd --georeferencer-test 可集中检查,报告为 output/georeferencer-test.json。栅格投影变换、PDF 地图/报告、配准窗口停靠、矢量脚本仍未完成,相关 Action 保持“部分实现”。原版 UI 已放入项目,运行时加载,重启即可,无需手动 pyuic/pyrcc。

QGIS 原版及本项目的相关移植代码遵循根目录 COPYING;资源保留原有许可说明。

About

采用QGIS的PythonAPI和pyqt的内容,尝试复现QGIS的全部功能

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages