当前位置: 首页 > 知识库问答 >
问题:

使用pyqgis列出地理包中的所有光栅图层

晏志明
2023-03-14

使用以下代码,可以非常轻松地列出地理包中的所有矢量层:

my_gpkg = r'PATH_TO_GEOPACKAGE'
gpkg_layers = [l.GetName() for l in ogr.Open(my_gpkg )]

是否还有一种方法可以列出地理包中的所有光栅图层?

共有1个答案

梁丘璞瑜
2023-03-14

可以解决我的问题与这个职位的帮助:https://gis.stackexchange.com/questions/287997/counting-the-number-of-layers-in-a-geopackage

这是我的解决方案:

import sqlite3

my_gpkg = r'PATH_TO_GEOPACKAGE'
            
sqliteConnection = sqlite3.connect(my_gpkg)
cursor = sqliteConnection.cursor()

# the table gpkg_contents is mandatory in every geopackage
sqlite_select_query = """Select table_name from gpkg_contents where data_type = 'tiles'"""
cursor.execute(sqlite_select_query)
records = cursor.fetchall()
raster_layers = []
for row in records:
    layer_name = row[0]
    raster_layers.append(layer_name)
            
print('These are the raster layers in your geopackage: {}'.format(raster_layers))

cursor.close()
 类似资料:
  • 对于一个项目,我正在创建不同的层,这些层都应该被写入一个geopackage。我正在使用QGIS 3.16.1和运行在Python 3.7上的QGIS中的Python控制台 我尝试了很多事情,但不知道如何做到这一点。这是我目前使用的。 问题是,在“测试”中。“gpkg”创建的层称为“测试”,而不是“点1”或“点2”。和第二个QgsVectorFileWriter。writeAsVectorForm

  • 下面的代码在我的图像上生成两个框。我正计划进一步分析这些框内的像素。 在下面的例子中,在红色方块的情况下,我不想继续下去,因为它的右上角有黑色像素。而我想继续在绿色方块的情况下,因为它没有一个黑色像素沿着它的边缘。

  • 嗨,光栅战士! 经过数月的数据处理,我对结果感到头痛。我对R和空间分析很陌生,但在我的学习过程中很开心。 这里是我的问题:一旦我将zonal函数应用于一组5个光栅对象(.tif),不知何故,我会在我假设为零的区域中得到重复的值。此外,某些值会显示在其他单元格中。 这里我的代码: 以下是我的结果: 从31到36与从1到6的值相同。 这里是我的一位同事的结果,我正在与他进行比较 正如您所看到的,我得到

  • 我需要为我的QGIS项目加载几个矢量层,这样我就可以在每个层中测试我的脚本的每个功能。然而,最后我想只做一两层兴趣,而放弃其他的,所以我想自动做。 我用一些层成功地做到了这一点,但有一层给我带来了问题,我还没有弄清楚原因。 这里有一些代码: 加载层(几乎可以肯定,这不是问题): 现在,我创建了这个函数来删除所有加载的层,除了我想使用的层。,这仅仅是因为我试图理解这个问题。 然后,我创建了一个新的层

  • 问题内容: 有没有一种方法可以获取实例中所有数据库中所有存储过程中引用的所有列和表?输出应为: 问题答案: 这将得到您想要的列表,但是,如果您在动态SQL中嵌入了此类列引用(并且可能找不到依赖于延迟名称解析的引用),则将无济于事。SQL Server不会解析存储过程的文本以提供DMV输出。 现在尝试使用子句来处理在同一服务器上具有不同归类的数据库的情况。 如果您的数据库处于80兼容模式,那么该语法

  • 我有几个目录,里面都是每日的气候数据。我需要将每日栅格合并为每周栅格,一些是通过值的总和,一些是通过值的平均值。到目前为止,我已经在目录(其中包含每日光栅文件)中创建了一个文件名向量,并为编写了一个