我想对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
脚本了吗?#1 楼
为了完整起见,下面是一个使用ogr2ogr的实际示例: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驱动程序,因此应该可以很好地工作。
评论
PostGIS是否能够利用PostgreSQL 9.2中的改进?由于postgres现在原生支持9.2,有人知道PostGIS中的类似开发吗?如果没有ogr2ogr segway,那就太好了。