在Windows上,我试图将shapefile (找到的here)加载到PostGIS中,以便能够进行地理空间查询。使用以下ogr2ogr命令:
set PGCLIENTENCODING=LATIN1
ogr2ogr -f "PostgreSQL" PG:"dbname=my_database user=docker password=docker port=54320" "Census2011_Garda_Subdistricts_Nov2013.shp" -a_srs "EPSG:29902" -nlt PROMOTE_TO_MULTI -skip-failures我在控制台上没有得到任何错误或失败。所有多边形现在都是MultiPolygons。ogr2ogr自动为我创建了一个表,如下所示:

除了在这些功能中查询点这样的事情之外,我还希望能够使用以下命令查询这些表以返回GeoJSON:
SELECT jsonb_build_object(
'type', 'FeatureCollection',
'features', jsonb_agg(feature)
)
FROM (
SELECT jsonb_build_object(
'type', 'Feature',
'id', ogc_fid,
'geometry', ST_AsGeoJSON(wkb_geometry)::geometry,
'properties', to_jsonb(row) - 'gid' - 'geom'
) AS feature
FROM (SELECT * FROM public.census2011_garda_subdistricts_nov2013) row) features;我在堆栈溢出here上找到的。
然而,这个查询给出了以下错误:
SQL Error [XX000]: ERROR: parse error - invalid geometry
Hint: "{"" <-- parse error at position 2 within geometry因为几何表似乎是错误的:

这是我可以调整的ogr2ogr命令的问题吗?这是原始shapefile的问题吗?表的定义有误吗?
谢谢你的帮助。
发布于 2020-07-30 01:53:02
您的查询中存在错误的强制转换。
你写了
SELECT jsonb_build_object(
...
'geometry', ST_AsGeoJSON(wkb_geometry)::geometry,这基本上创建了一个geojson,您尝试将其转换回一个几何体,但失败了。
您可以删除此强制转换,或者像原始查询一样将其强制转换为jsonb。
https://stackoverflow.com/questions/63159226
复制相似问题