0

我正在尝试使用 OGR 从带有 python 的 WFS 源中读取功能并将它们放入 PostgreSQL 数据库中。要开始阅读迭代中的功能,我首先获取第一个功能,然后再进入遍历所有功能的 while 循环:

layer.ResetReading()
feat = layer.GetNextFeature()
if not feat:
    self.log("error", "Kon niet naar de eerste feature in %s gaan." % layer.GetName())
else:
    if feat.GetFID():
        self.sourcelist.append(feat.GetFID())
    print ("\n%s : Source feature met dit nummer toevoegen aan %s" % (str(i),uitnaam), end = '\r' )

该层存在。我什至可以从中获取 ogr.layer.GetLayerDefn() ,我用它在执行这段代码之前在 postgresql 中创建字段。这一切都适用于大多数 WFS 服务和层,但是,对于某些 WFS 层,无法读取任何特征。它不报告错误,只是没有功能。当我使用浏览器使用相同的 srs 和 bbox 发出请求时,它确实会生成一个功能列表。我真的不明白为什么这适用于我使用的大多数 wfs 服务的大多数层,而对于某些它却不起作用?我试图用 ogr2ogr 控制台应用程序来实现相同的目标。对于在我的程序中不起作用的层,它返回一个错误:

ERROR 1: srsDimension = 4 not supported

有人知道这里发生了什么吗?

4

2 回答 2

0

尝试此请求后:

https://geoservices.vlaamsbrabant.be/FSW/MapServer/WFSServer?service=wfs&version=2.0.0&request=getfeature&typenames=dataservices_FSW:FietssnelwegenFeatureType

这似乎是一个证书问题。证书似乎没问题,但浏览器将请求标记为“不安全”。

可能需要申请证书才能使用此服务?!

于 2020-04-17T22:51:24.710 回答
0

编辑:

我发现在谷歌上搜索你的错误很少,但可以发现大多数结果表明几何的这个属性设置为 2。可能是一个坏的几何?如果可以,请尝试跳过,或者在使用 ogr 阅读之前尝试使用下面的请求模块进行更正。

结束编辑;

你能提供一份样品有效的请求吗?我无法得到一个有效的...

在这种情况下,看起来 ogr 无法直接读取 wms,可能是因为 4 维的 srs 错误。在这种情况下,我会尝试使用 requests 模块发出请求,然后获取响应,将其转换为 ogr 可以理解的形式,然后将其放入数据库中。

import requests
url = 'http://geoservices.vlaamsbrabant.be/FSW/MapServer/WFSServer'
x=requests.get(url)
print(x.text)
于 2020-04-09T12:38:40.583 回答