2014-04-14 87 views
1

我有一個文件目錄,它有年份和月份的喘振數據以及它們受到影響的管理單元(例如1977年7月份激增和它受影響的公社名單)。我還有一個降水數據目錄也是按月份和年份。我需要執行一個名爲Near的GIS操作,然後對降水數據和潮汐數據進行表格式連接,以便浪涌月份/年份與降水月份/年份相匹配。在一個目錄中搜索shapefile

一般來說,對於我所描述的過程中的僞代碼如下: 爲(潮2077至06年){ 如果(浪涌== 1977年7月){ 發現沉澱1977年7月從目錄 雨1977年7月通過NearFID } }

如何做到在Python這一進程,如何搜索目錄的必要文件上的文件近運行發現 使浪涌1977年7月的表格加入和?

+0

你怎麼知道數據文件的月份和年份?它是文件名的一部分嗎? – wwii

+0

@wwii是的,我將它們命名爲country_surgeName_year_month用於浪涌文件和precipitation_year_month用於降水文件。 – atoregozh

回答

1

給該所提供的信息,我們需要作出一些假設:

  1. 所有雨shapefile是在一個目錄。
  2. 降水文件在它們的文件名中有一些隨機元素,因此有必要通過名稱直接在形狀文件中搜索引用。
  3. 降水文件有可識別的月份和年份的文件名。

鑑於這些假設,我們可以使用Python的glob模塊來查找特定月份和年份的形狀文件。

目錄鑑於浪涌文件(/路徑/到/浪涌/):

surge_july_2000.shp, surge_august_2000.shp,etc. 

和雨文件目錄(/路徑/到/雨):

precip_random123_july_2000.shp, precip_random8482_august_2000.shp, etc 

我們可以通過修改你的僞代碼看起來像這樣:

import glob 
for curSurge in glob.glob("/path/to/surges/*.shp"): 
    blah, month, year = curSurge.split('.')[0].split('_') 
    matches = glob.glob('/path/to/precip/*_%s_%s.shp'%(month, year)) 
    if len(matches) != 1: 
     raise Exception, "Oh No!, We found %d matches instead of 1!"%(len(matches)) 
    run_near_and_make_tabular_join(curSurge, matches[0]) 

這將是很難解決假設#3,其他人是tr ivial。