首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从地质灾害看QGIS工程负荷

从地质灾害看QGIS工程负荷
EN

Stack Overflow用户
提问于 2022-04-25 09:28:40
回答 1查看 238关注 0票数 1

我的尝试是在上面的对话框后面使用相同的函数,在这个对话框中,QGIS允许通过给出连接,路径来加载项目,形成一个重力场。这个想法是为了能够检查一个地质公园是否包含项目。到目前为止,我所做的是

代码语言:javascript
复制
prj = QgsProject.instance()
prj.read('geopackage:/home/me/Downloads/test.gpkg')

但是这给了我一个错误:ogr error no more rows

谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-05-11 03:26:00

尝试这样做以检查Geopackage是否有一个项目:

代码语言:javascript
复制
import sqlite3
import contextlib

geopackage = r"D:\temp\test.gpkg"

with contextlib.closing(sqlite3.connect(geopackage)) as connection:
    
    cursor = connection.cursor()

    cursor.execute("""
        SELECT name 
        FROM sqlite_master 
        WHERE type='table' 
        AND name='qgis_projects';
        """);
    
    row = cursor.fetchone()
    
    print(f"Contains no projects? {not row}")

并开展一个项目:

代码语言:javascript
复制
PROJECT_NAME = "proj"
iface.addProject(rf"geopackage:D:\temp\test.gpkg?projectName={PROJECT_NAME}")

我花了好长时间才想出解决办法,尽管它就在我面前。

无论如何,我会留下下面的初步答案,因为它可能对其他人有用,或者如果你想了解更多关于QGIS项目和Geopackage.

看看这个GitHub项目pka/qgpkg

QGIS添加了一个工具栏按钮,用于将当前项目保存在GeoPackage文件中,另一个按钮用于从GeoPackage文件中加载QGIS项目。

然而,该项目似乎不再维持了4年。因此,在QGIS3.24.1(我使用)中没有使用它,因为项目代码仍然使用PyQt4。

还有一个项目卡达斯-albireo/kadas-gpkg-plugin似乎也这样做,并且使用PyQt5。

我假设这些是QGIS中的相关C++类:

您可以反向设计代码,并根据这些项目编写自己的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71997312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档