0

在 Windows 上,我正在尝试将 shapefile(在此处找到)加载到 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;

我在 Stack Overflow 上找到的

但是,此查询给了我以下错误:

SQL Error [XX000]: ERROR: parse error - invalid geometry
  Hint: "{"" <-- parse error at position 2 within geometry

因为几何表似乎是错误的:

在此处输入图像描述

这是我可以调整的 ogr2ogr 命令的问题吗?原来的shapefile有问题吗?表定义错了吗?

谢谢你的帮助。

4

1 回答 1

0

您的查询中有错误的演员表。

你写了

SELECT jsonb_build_object(
...
'geometry',   ST_AsGeoJSON(wkb_geometry)::geometry,

这基本上创建了一个geojson,您尝试将其转换回几何,但失败了。

您可以删除此演员表,或将其转换jsonb为原始查询中的内容。

于 2020-07-29T17:53:02.017 回答