2017-01-25 24 views
-1

我與地塊和它們每年相應作物的數據庫工作(source合併年度.GDB地理數據庫

我的最終目標是爲作物類型的預測模型,給出地塊。例如,如果過去4年農民種植大豆,大豆,玉米和玉米,第5年他可能會種植什麼種子。

2009年至2016年有8個獨立的.gdb數據庫,但模式相同;最重要的是,土地宗地幾何(多邊形)和作物類型。

理想情況下,我想使用一個(時間序列)數據庫,其中每個宗地幾何有一行,每年一列(記錄當年的作物類型)。

達到此目的的最佳方法是什麼?

多年來很多多邊形'重複',但邊界的變化很小。所以我想任何兩個重疊超過給定閾值的多邊形應該被賦予相同的unque id。樣品:

2016(綠色)和2009年(紅色) enter image description here

只有2009年(紅色) enter image description here

回答

0

下面是我所採取的步驟:

  1. 轉換GDB文件來塑造的文件,這是因爲顯然GDB不是一個開源的格式,並在有限的工具支持

    ogr2ogr -f「ESRI Shape文件」 2009.shp 2009.gdb ogr2ogr -f 「ESRI shape文件」 2010.shp 2010.gdb

    ....同其他年份....

文件名錶示與當年對應的數據集。

  • 導入形狀文件到PostGIS的

    shp2pgsql -I -s 28992 2009.shp 2009 | psql -U postgres -d作物

    ....與其他年份相同....

  • 28992是我在這個website的幫助下找到的SRID。

    1. 在2010表中添加一個外鍵列,該表存儲2009年的多邊形標識。我們將其稱爲global_geo_id。如果它被設置爲一個多邊形在2010年,意味着它是自2009年

    2. 的「相同」的多邊形不要在PostGIS的

      更新年之間的空間加入「2010」

      集global_geo_id =「2009」 .global_geo_id

      從 「2009」,其中

      ST_Intersects( 「2009」 .geom, 「2010」 .geom)和

      (st_area(ST _intersection( 「2009」 .geom, 「2010」 .geom))/( 「2009」 .shape_area))> 0.8

    0.8是相似度閾值;您設置的越高,匹配將會越保守。

    1. 重複其他年份的步驟3,4。
    1

    至於你說的.GDB,我假設你想使用還是堅持到ArcGIS ? 在任何情況下,一個非常基本的方法讓你走(如果讓你去是你需要的):加入功能的表。
    如果在所有GDB中有任何類型的唯一ID是一致的,請將其加入到此屬性中。 (如果沒有的話,還應該有一個空間連接工具,用閾值來獲得相同的結果,如您所建議的)
    您可以選擇哪些列包含在分區表中,並且可以將連接的表導出到一個新的GDB。
    糾正我,但我認爲這可能足以滿足您的需求(我只是在這裏集思廣益)。
    如果沒有,有很多很多選項使用gdal/ogr,python,R,postgis,......也許你可以在軟件中列出你的偏好?

    +0

    嗨,感謝您的回覆,我在下面發佈了我的解決方案。 – olix20