首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PyQGIS中获取shapefile几何类型?

如何在PyQGIS中获取shapefile几何类型?
EN

Stack Overflow用户
提问于 2014-08-12 21:03:23
回答 3查看 9.2K关注 0票数 7

我正在编写一个脚本,它依赖于了解加载的shapefile的几何类型。但是我看过pyqgis食谱和API,不知道如何调用它。

事实上,我在解释API方面有困难,所以任何关于这个主题的说明都会很感激。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-14 17:29:40

这个命令很简单:

代码语言:javascript
复制
layer=qgis.utils.iface.mapCanvas().currentLayer()

if layer.wkbType()==QGis.WKBPoint:
    print 'Layer is a point layer'

if layer.wkbType()==QGis.WKBLineString:
    print 'Layer is a line layer'

if layer.wkbType()==QGis.WKBPolygon:
    print 'Layer is a polygon layer'

if layer.wkbType()==QGis.WKBMultiPolygon:
    print 'Layer is a multi-polygon layer'

if layer.wkbType()==100:
    print 'Layer is a data-only layer'

您可以使用数字(1,2,3,4)代替QGis.WKB*****语法,但是上面描述的方式会产生更易读的代码。

食谱中的实际参考资料在这里:cookbook/geometry.html

票数 10
EN

Stack Overflow用户

发布于 2017-08-22 12:47:03

寻找一种在字符串中使用几何图形类型的方法,经过大量搜索,最终在文档中找到了一个干净的方法:

代码语言:javascript
复制
geomTypeString=qgis.core.QgsWkbTypes.displayString(int(layer.wkbType()))

它会给出“点”、“线”、“多边形”、“多点”.并且它“知道”了Qgis中所有的几何类型。

为我的目的,我仍然有一些麻烦'Point25D‘和其他奇怪的类型,所以增加了这个限制它的扁平(点,线,保利)

代码语言:javascript
复制
geomFlatTypeString=qgis.core.QgsWkbTypes.displayString(int(
    qgis.core.QgsWkbTypes.flatType(int(in_layer.wkbType()))))

对于Info,它的目标是创建一个内存层复制层,不管该层的类型是什么,下面是完整的代码:

代码语言:javascript
复制
def copyLayer(in_layer,condition=None):
    #condition=function to test features and return True or False______
    if condition==None:
        def condition(f):
            return True
    typeGeom=qgis.core.QgsWkbTypes.displayString(int(
        qgis.core.QgsWkbTypes.flatType(int(in_layer.wkbType()))))
    crsId=in_layer.crs().authid()
    out_layer=QgsVectorLayer(typeGeom+"?crs="+crsId,
                             in_layer.name()+"_copie",
                             "memory")
    fields=in_layer.dataProvider().fields().toList()
    out_layer.dataProvider().addAttributes(fields)
    out_layer.updateFields()
    features=[f for f in in_layer.getFeatures() if condition(f)]
    out_layer.dataProvider().addFeatures(features)
    return out_layer
票数 3
EN

Stack Overflow用户

发布于 2015-04-12 02:47:02

QgsGeometry有返回所需内容的方法wkbType。

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

https://stackoverflow.com/questions/25273987

复制
相关文章

相似问题

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