在目录中搜索shapefile

时间:2014-04-14 05:11:31

标签: python search gis arcpy

我有一个文件目录,按年份和月份以及他们受影响的行政单位(例如1977年7月的激增以及它影响的公社名单)都有激增数据。我还有月份和年份的降水数据目录。我需要执行一个名为Near的GIS操作,然后制作降水数据和浪涌数据的表格连接,以便激增月/年与沉淀月/年相匹配。

通常,我所描述的流程的伪代码如下: for(从1977年到2006年激增){     if(surge == 1977年7月){        从目录中找到1977年7月的降水        在找到的文件上运行Near        1977年7月和1977年7月由NearFID制作表格     } }

如何在python中执行此过程以及如何在目录中搜索必要的文件?

1 个答案:

答案 0 :(得分:1)

提供所提供的信息,我们需要做出一些假设:

  1. 所有的悬崖shapefile都在一个目录中。
  2. 悬崖文件的文件名中有一些随机元素,因此有必要在名称内直接搜索形状文件。
  3. 悬崖文件在文件名中有可识别的月份和年份。
  4. 鉴于这些假设,我们可以使用Python的glob模块来查找特定月份和年份的形状文件。

    在目录中给出喘振文件(/ path / to / surge /):

    surge_july_2000.shp, surge_august_2000.shp,etc.
    

    和目录中的沉淀文件(/ path / to / precip):

    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,但其他假设是微不足道的。