我有postgreSQL 8.4 + PostGIS 1.5。
我想生成GeoJson。我这样做:
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.the_geom)::json As geometry
, row_to_json(lp) As properties
FROM parcels_temp As lg
INNER JOIN (SELECT num, cadastr FROM parcels_temp) As lp
ON lg.num = lp.num ) As f ) As fc;
但是得到一个错误:
ERROR: type "json" does not exist
LINE 4: , ST_AsGeoJSON(lg.the_geom)::json As geometry
我做错了什么?
答案 0 :(得分:10)
PostgreSQL 8.4中没有json
数据类型。该类型在9.2中引入,但创建了一个9.1的后端;见this bitbucket。
使用text
。 json
只是一个围绕text
类型的验证包装,有趣的是像row_to_json
这样的函数 - 也不可用于8.4。
如果你不能使用text
- 比如说,因为你正在使用期望json
的第三方代码,或者因为你需要json函数 - 那么是时候升级PostgreSQL了。无论如何,8.4正在变得相当老,就像PostGIS 1.5一样。