2009-07-09 48 views
7

我有8個真正的值,我想合併成一個多邊形。我一直無法弄清楚如何使用這些值創建多邊形。我不斷的如何在PostgreSQL中使用字段創建多邊形?

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

試圖改變,但是不斷收到關於不存在多邊形功能或類型的多邊形無效的輸入語法錯誤。有沒有人做過這個?

回答

12

對於普通Postgres的多邊形的語法更像是:

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

其中1是一些標識和引用條目是多邊形。我期望查詢是相似的,你可能需要括號等座標。通常用於您想要的地理空間數據(Lon Lat)座標。 POSTGIS也需要WKT之類的語句:

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

+0

該WKT語句看起來像我想要的,但該數據庫是由Drupal(CMS)創建的,因此在創建時不使用PostGIS模板。我可以用其他方式將文本轉換爲多邊形嗎? – 2009-07-10 12:17:07

+0

我找到了有關將PostGIS添加到數據庫的說明,並讓它起作用。 – 2009-07-10 14:10:44

1

正如bvmou提到 - GeomFromText將正常工作。 我只添加一個小語法更新:

GeomFromText('POLYGON((long1 lat1, long2 lat2, long3 lat3))') 
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 
         ); 
    

注變換到不同的空間參考。 POLYGON關鍵字需要雙括號'(())'。

相關問題