10

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

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

但不断收到有关多边形函数不存在或多边形类型的输入语法无效的错误。有没有人这样做过?

4

3 回答 3

16

常规 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))')

于 2009-07-10T04:45:32.487 回答
2

正如 bvmou 所提到的 -GeomFromText可以正常工作。我将添加一个小的语法更新:

GeomFromText('POLYGON((long1 lat1, long2 lat2, long3 lat3))')
于 2011-01-09T21:20:00.167 回答
0

此示例从表中获取经度和纬度坐标并将它们转换为几何图形。每个框的尺寸分别为 long_high、long_low、lat_high 和 lat_low。在这里,一个大约 500m x 500m 的盒子。

  1. 将新几何列“框”添加到表中

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

    更新 predpol_raw
    设置框 =
            ST_变换(
                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
            );
    

请注意转换为不同的空间参考。POLYGON 关键字需要双括号'(( ))'。

于 2013-10-07T00:51:30.300 回答