【问题标题】:How can I create a polygon using fields in PostgreSQL?如何使用 PostgreSQL 中的字段创建多边形?
【发布时间】:2010-11-09 11:56:09
【问题描述】:

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

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

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

【问题讨论】:

    标签: postgresql polygon postgis


    【解决方案1】:

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

    【讨论】:

    • 那个 WKT 语句看起来像我想要的,但是数据库是由 Drupal(一个 CMS)创建的,所以创建它时没有使用 PostGIS 模板。我可以通过其他方式将文本转换为多边形吗?
    • 我找到了关于将 PostGIS 添加到数据库的说明,并让它工作。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      此示例从表格中获取经度和纬度坐标并将它们转换为几何图形。每个框的尺寸分别为 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 关键字需要双括号'(( ))'。

      【讨论】:

        猜你喜欢
        • 2021-09-02
        • 2013-01-02
        • 2019-06-07
        • 2019-10-14
        • 2019-07-20
        • 1970-01-01
        • 1970-01-01
        • 2019-04-08
        • 2016-02-19
        相关资源
        最近更新 更多