如何使用PostgreSQL中的字段创建多边形?

时间:2009-07-09 18:39:42

标签: postgresql polygon postgis

我在表中有8个实数值,我想将它组合成一个多边形。我无法弄清楚如何使用这些值创建多边形。我一直在尝试

的变体
SELECT polygon(lat1,lon1,lat2,lon2,lat3,lon3,lat4,lon4) FROM table;

但不断出现多边形函数不存在的错误或类型为多边形的输入语法无效。有人曾经这样做过吗?

3 个答案:

答案 0 :(得分:13)

常规postgres多边形的语法更像是:

insert into geo_table values (1, '((2,2),(3,4),(3,6),(1,1))');

其中1是某个id,引用的条目是多边形。我希望查询类似,你可能需要括号等坐标。通常用于您想要的地理空间数据(Lon Lat)坐标。 Postgis还会收集WKT语句,如:

GeomFromText('POLYGON((long1 lat1, long2 lat2, long3 lat3))')

答案 1 :(得分:1)

正如bvmou所提到的那样 - GeomFromText会正常工作。 我只想添加一个小的语法更新:

GeomFromText('POLYGON((long1 lat1, long2 lat2, long3 lat3))')

答案 2 :(得分:0)

此示例从表中获取经度和纬度坐标,并将它们转换为几何。每个框的尺寸为long_high,long_low,lat_high和lat_low。这里有一个约500米乘500米的盒子。

  1. 向表中添加一个新的几何列“框”

    SELECT AddGeometryColumn('public', 'predpol_raw', 'box', 2240, 'POLYGON', 2);
  2. 使用这些值更新新字段。

    UPDATE predpol_raw
    SET box =
            ST_Transform(
                ST_GeomFromText(
                    format('POLYGON((%s %s, %s %s, %s %s, %s %s, %s %s))',
                        long_high,lat_high, long_low,lat_high,
                        long_low,lat_low, long_high,lat_low,
                        long_high,lat_high
                    ),
                    4326
                ),
                2240
            );
    
  3. 请注意转换为不同的空间参考。 POLYGON关键字需要双括号'(())'。