¿Exportando la característica GeoJSON desde PostGIS? [duplicar]

19

Me gustaría hacer un volcado GeoJSON de una tabla PostGIS, pero quiero exportar características (la geometría y las propiedades) no solo la geometría. He estado investigando la función ST_AsGeoJSON pero parece que solo puedo obtener la información de coordenadas (que tiene sentido ya que es una función de geometría).

Por ejemplo:

select st_asgeojson(the_geom) from street_centerline limit 1;

Devoluciones:

{"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]]]}

Tengo curiosidad si alguien sabe de una manera simple de obtener la información de la propiedad también. ¿Alguien ya ha escrito un script pgsql2geojson ?

    
pregunta atogle 11.09.2011 - 07:02

3 respuestas

20

Para completar, aquí hay un ejemplo real con 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"

Asegúrese de que su usuario tenga acceso de lectura a la tabla geometry_columns .

Específicamente:

GRANT SELECT ON geometry_columns to ubuntu;
GRANT SELECT ON geography_columns to ubuntu;
GRANT SELECT ON spatial_ref_sys to ubuntu;
    
respondido por el Steve Bennett 27.03.2014 - 06:45
18

Aquí hay una solución obvia para mi propia pregunta: ogr2ogr . No estoy seguro de por qué no lo pensé antes. Tiene tanto PostGIS como GeoJSON controladores, así que esto debería funcionar muy bien.

    
respondido por el atogle 11.09.2011 - 09:30
8

Solo para proporcionar información sobre una pregunta anterior si alguien encuentra esto:

a partir de 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;

Tomado de la respuesta original completa aquí

    
respondido por el Philip Attisano 24.05.2017 - 17:11

Lea otras preguntas en las etiquetas