Не можете прочитать некоторые слои с OGR? - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь прочитать функции из источника WFS с python, используя OGR, и поместить их в базу данных PostgreSQL. Чтобы начать чтение объектов в итерации, я сначала получаю первый объект, прежде чем перейти к тому моменту, когда l oop перебирает все объекты:

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

Кто-нибудь знает, что здесь происходит?

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

После выполнения этого запроса:

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

Кажется, проблема с сертификатом. Сертификат, кажется, в порядке, но браузер помечает запрос как «Незащищенный».

Может потребоваться запрос сертификата, чтобы иметь возможность использовать этот сервис ?!

0 голосов
/ 09 апреля 2020

РЕДАКТИРОВАТЬ:

Я обнаружил, что гуглил вашу ошибку очень мало, но обнаружил, что в основном результаты показывают, что для геометрий этот атрибут установлен на 2. Может ли быть плохая геометрия? Попробуйте пропустить, если можете, или попробуйте исправить его с помощью модуля запросов ниже, прежде чем читать с помощью ogr.

END EDIT;

Можете ли вы предоставить один пример действительного запроса? Мне не удалось получить тот, который работает ...

В этом случае выглядит, как ogr не может читать wms напрямую, возможно, из-за ошибки srs с 4 измерениями. В этом случае я попытался бы выполнить запросы, используя модуль запросов, а затем получить ответ, преобразовать его в форму, понятную ogr, и затем поместить ее в базу данных.

import requests
url = 'http://geoservices.vlaamsbrabant.be/FSW/MapServer/WFSServer'
x=requests.get(url)
print(x.text)
...