使用QGIS计算选定多边形的边界框坐标


17

我只是手动(而且我肯定有点不准确)检索了县多边形的边界框坐标,这是从较大的县形状图层中选择的。我希望能够使用QGIS插件或其他功能来快速而又不手动地进行计算。几乎可以肯定这是可能的,但我无法通过Google搜索找到任何东西

Answers:


26

以下Python小函数将输出当前活动特征的边界框坐标:

def printBB():
    feature = iface.activeLayer().selectedFeatures()[0]
    print feature.geometry().boundingBox().toString()

要定义功能,请从“插件”菜单打开Python控制台,将三行复制并粘贴到控制台中,然后按Enter。然后,您可以通过printBB()在选择所需功能时键入并按Enter 来调用该功能。


1
当我尝试运行此脚本时收到此错误: File "<input>", line 4 printBB() ^ SyntaxError: invalid syntax
cbunn

@cbunn确保您已在层/目录中选择了层-这对此非常敏感!
DPSSpatial 2015年

谢谢您的帮助。我也忘记了在调用它之前按Enter来完全定义函数printBB()。
cbunn

2
我必须为第3行使用print(feature.geometry()。boundingBox()。toString())
。– cm1

16

QGIS可以通过Layer Extent中的Polygon来实现

向量-研究工具-图层范围内的多边形

将产生一个具有诸如XMIN XMAX YMIN YMAX AREA WIDTH HEIGHT的属性的新shapefile


1
您必须检查Use only selected obectscalculate for every object获得所需的结果。
AndreJ 2013年

嗯,这对我不起作用,输出的shapefile本质上是空白的
boulder_ruby 2013年

1
如果您选择了对象,则只想选中“仅使用选定的对象”。我没有选中这两个字段,并取得了不错的结果。
约翰娜

4

您也可以使用Python中的PyShp插件来执行此操作。它非常简单...

import shapefile

sf = shapefile.Reader("Path to shapefile...") 
shapes = sf.shapes() 
bbox = shapes[0].bbox # Retrieves the bounding box of the first shape

print bbox # Will print the bounding box coordinates

有关PyShp和其他功能的更多信息,请参见此处


3

如果您需要许多多边形的边界框,则可以使用WRITE_BBOX = YES选项将图层“另存为...”到GeoJSON,并且“ geometry”属性之前将只有一个“ bbox”属性,即使对于多多边形也是如此。

..., "bbox": [ -70.062408006999874, 12.417669989000046, -69.876820441999939, 12.632147528000104 ], "geometry": ...

1

我必须这样做才能生成可以导入为其他位置列表的字段。

  1. 安装QGIS插件FieldPyculator
  2. 切换图层编辑
  3. 在属性表中创建新列作为字符串,例如bbox(保存编辑)
  4. 开放式温控器
  5. 将更新字段设置为bbox
  6. 在字段表达式中输入类似以下内容的内容:

    bb = $geom.boundingBox().toString()

    bb = bb.replace(' ','')

    bb = bb.replace(':',',')

    value = bb

  7. 关闭编辑并保存图层

1

为了快速访问,一种选择是将bbox坐标保留在属性表中。

  • 切换编辑模式
  • 发射场计算器
  • 设置创建新字段,设置名称(例如xmin),类型(十进制),长度,(精度)
  • 表达式:x_min($ geometry)
  • 您将在属性表​​中使用LEFT坐标获得一个新字段。

    对RIGHT,BOTTOM,TOP重复以下表达式:

  • x_max($ geometry)
  • y_min($ geometry)
  • y_max($ geometry)
  • 结果示例 在此处输入图片说明

    然后,您可以将AutoFields插件设置为在功能更改时自动更新这些字段。

    By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
    Licensed under cc by-sa 3.0 with attribution required.