【发布时间】:2010-11-09 11:56:09
【问题描述】:
我想将表格中的 8 个实数值组合成一个多边形。不过,我无法弄清楚如何使用这些值创建多边形。我一直在尝试
SELECT polygon(lat1,lon1,lat2,lon2,lat3,lon3,lat4,lon4) FROM table;
但不断收到有关多边形函数不存在或多边形类型的输入语法无效的错误。以前有人做过吗?
【问题讨论】:
标签: postgresql polygon postgis
我想将表格中的 8 个实数值组合成一个多边形。不过,我无法弄清楚如何使用这些值创建多边形。我一直在尝试
SELECT polygon(lat1,lon1,lat2,lon2,lat3,lon3,lat4,lon4) FROM table;
但不断收到有关多边形函数不存在或多边形类型的输入语法无效的错误。以前有人做过吗?
【问题讨论】:
标签: postgresql polygon postgis
常规 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))')
【讨论】:
正如 bvmou 所提到的 - GeomFromText 可以正常工作。
我将添加一个小的语法更新:
GeomFromText('POLYGON((long1 lat1, long2 lat2, long3 lat3))')
【讨论】:
此示例从表格中获取经度和纬度坐标并将它们转换为几何图形。每个框的尺寸分别为 long_high、long_low、lat_high 和 lat_low。在这里,一个大约 500m x 500m 的盒子。
向表中添加一个新的几何列“框”
SELECT AddGeometryColumn('public', 'predpol_raw', 'box', 2240, 'POLYGON', 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 关键字需要双括号'(( ))'。
【讨论】: