如何在QGIS中打开PostgREST geojson web服务



我有一个PostgreSql存储过程,它返回用json_build_object函数创建的geojson特性集合。这个web服务在OpenLayers中打开得很好,但是,当我尝试在QGIS中打开它时,使用数据源管理器->矢量->协议->geojson,我得到以下错误:

无效的数据源:[myurl]/rpc/wod_geojson不是有效或可识别的数据源。

返回的geojson如下所示:

{
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"id": 1,
"geometry": {
"type": "Point",
"coordinates": [0.0, 0.0]
},
"properties": {
"num": 1,
"lib": "bla"
}
}, {
"type": "Feature",
"id": 2,
"geometry": {
"type": "Point",
"coordinates": [1.0, 1.0]
},
"properties": {
"num": 2,
"lib": "blabla"
}
}, {
"type": "Feature",
"id": 3,
"geometry": {
"type": "Point",
"coordinates": [2.0, 2.0]
},
"properties": {
"num": 3,
"lib": "blablabla"
}
}
]

}

我错过了什么?

PostGrest响应标头:

Content-Range   0-0/*
Content-Type    application/geo+json
Date    Wed, 09 Feb 2022 11:02:26 GMT
Server  postgrest/9.0.0
Transfer-Encoding   chunked
Vary    Accept-Encoding

编辑时间:奇怪的是,我可以使用Python:在QGIS中打开web服务

myLayer= QgsVectorLayer('[myurl]/rpc/wod_geojson', 'myLayer', 'ogr')
QgsProject.instance().addMapLayers([myLayer])

我也遇到过同样的问题,但我在PostgREST和最终客户端之间使用了NodeJS服务器。我观察了流量,注意到QGIS数据源管理器在请求标头中包含Accepts: 'text/plain, application/json'。事实证明PostgRest对text/plain请求的响应不同。因此,在我的代理服务器中,我现在覆盖这个请求头,以强制类型为application/json

相关内容

  • 没有找到相关文章

最新更新