2014-04-14 45 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。