我想对PostGIS表进行GeoJSON转储,但是我想导出特征(几何和属性)而不仅仅是几何。我一直在研究ST_AsGeoJSON函数,但是看来我只能获取坐标信息(这是有意义的,因为它是一个几何函数)。

例如:

select st_asgeojson(the_geom) from street_centerline limit 1;


返回:

{"type":"MultiLineString","coordinates":[[[-65.591776562805038,41.682190576167052],[-65.591998971284028,41.682082119060382],[-65.592001213509064,41.682081025737766],[-65.593689871787177,41.681257533373952],[-65.595415661879244,41.680415888937219],[-65.595440519465640,41.680403765889309],[-65.595603134242481,41.680324459445771]]]}


我是好奇是否有人知道一种获取财产信息的简单方法。有人写过pgsql2geojson脚本了吗?

评论

PostGIS是否能够利用PostgreSQL 9.2中的改进?由于postgres现在原生支持9.2,有人知道PostGIS中的类似开发吗?如果没有ogr2ogr segway,那就太好了。

#1 楼

为了完整起见,下面是一个使用ogr2​​ogr的实际示例:

ogr2ogr -f GeoJSON out.json \
  "PG:host=localhost dbname=gis user=ubuntu password=toomanysecrets" \ 
  -sql "select way,name,amenity from planet_osm_point a where a.amenity is not null"


确保您的用户具有对geometry_columns表的读取权限。

特别是:

GRANT SELECT ON geometry_columns to ubuntu;
GRANT SELECT ON geography_columns to ubuntu;
GRANT SELECT ON spatial_ref_sys to ubuntu;


评论


我对此输出感到好奇。我的意思是,由于这是输出geojson文件所必需的,因此输出不是必须是out.geojson而不是out.json ???我是新来的。谢谢

– Steefanos
17年2月1日在18:55

好吧,那只是文件名。确实没有一个标准-一些系统期望.json(因为它们是JSON文件),其他系统期望.geojson,而其他系统则不在乎。

–史蒂夫·贝内特(Steve Bennett)
17年2月2日,下午4:50

#2 楼

只是为了提供有关某个老问题的信息,如果有人遇到此问题:

自PostgreSQL 9.5+起

SELECT jsonb_build_object(
    'type',     'FeatureCollection',
    'features', jsonb_agg(feature)
)
FROM (
  SELECT jsonb_build_object(
    'type',       'Feature',
    'id',         gid,
    'geometry',   ST_AsGeoJSON(geom)::jsonb,
    'properties', to_jsonb(row) - 'gid' - 'geom'
  ) AS feature
  FROM (SELECT * FROM input_table) row) features;


取自完整原始答案,这里

评论


实际的作用是什么...我多年来寻找一种执行SELECT * EXCEPT COLUMNS(a,b)的方法,而您一直都有答案...

– ffflabs
19年2月8日在16:23

#3 楼

这是我自己的问题的明显解决方案-ogr2ogr!我不确定为什么我不早想到这一点。它同时具有PostGIS和GeoJSON驱动程序,因此应该可以很好地工作。