2017-08-31 4 views
2

私は、非空間的なテーブルと1対多の関係を持つ病院の空間テーブルを持っています。価値表(cirurgy、緊急性など)Postgisでは、空間テーブルと関連(非空間)テーブルの1対多の関係からGeojsonを構築する方法

病院(id、name、geom); 価額(id、name、valence)

"name"は共通フィールドです。

PostgreSQL/Postgisで有効なGeojsonをどのように構築するか?各病院(ポイント)は1つまたは複数の価数を持つことができますか?

私はすでにこのクエリのいくつかのバリエーションを試していましたが、常に "式として使用されるサブクエリによって返される複数の行"と同じエラーが返されました。

SELECT row_to_json(fc) FROM 
( 
    SELECT 'FeatureCollection' As type, array_to_json(array_agg(f)) As features from 

    (
    SELECT 'Feature' As type, ST_AsGeoJSON(lg.geom)::json As geometry, row_to_json 

     ((select l from (select 
     v.* 
       FROM valence v 
       inner join hospital lg on lg."name" = v."name") As l 
     )) As properties 
     from hospital as lg) 

    As f 
) As fc; 

多くの感謝!このクエリでは

答えて

2

は、「原子価」のリストが返さにGeoJSONオブジェクトはhttp://geojsonlint.com/

+1

多く、多くの感謝に応じて有効なプロパティproperties.valences

SELECT json_build_object( 'type', 'FeatureCollection', 'features', json_agg( json_build_object( 'type', 'Feature', 'geometry', ST_AsGeoJSON(h.geom)::json, 'properties', json_build_object( 'name', h.name, 'valences', ( -- Generate json array of "valences": SELECT array_to_json(array_agg(v.valence)) FROM valence v WHERE v.name = h.name GROUP BY v.name ) ) ) ) ) json FROM hospital h 

にJSON配列として返され、thibautg! –

関連する問題