【问题标题】:searching for shapefile within a directory在目录中搜索 shapefile
【发布时间】:2014-04-14 05:11:30
【问题描述】:

我有一个文件目录,其中包含按年和月列出的激增数据以及它们所影响的行政单位(例如 1977 年 7 月的激增及其影响的社区列表)。我也有一个按月和年分类的降水数据目录。我需要执行一项名为 Near 的 GIS 操作,然后将降水数据和浪涌数据进行表格连接,以便浪涌月/年与降水月/年匹配。

一般来说,我所描述的过程的伪代码如下: 对于(从 1977 年到 2006 年激增){ 如果(浪涌==1977 年 7 月){ 从目录中查找 1977 年 7 月的降水 在找到的文件上运行 Near 通过 NearFID 将 1977 年 7 月的浪涌和 1977 年 7 月的沉淀进行表格连接 } }

这个过程在python中如何进行,如何在目录中查找需要的文件?

【问题讨论】:

  • 如何知道数据文件的月份和年份?它是文件名的一部分吗?
  • @wwii 是的,我将它们命名为 country_surgeName_year_month 用于激增文件和 precip_year_month 用于降水文件。

标签: python search gis arcpy


【解决方案1】:

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

  1. 所有 precip shapefile 都在一个目录中。
  2. precip 文件的文件名中有一些随机元素,因此需要在内部搜索或直接按名称引用 shape 文件。
  3. precip 文件的文件名中有可识别的月份和年份。

鉴于这些假设,我们可以使用 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,但是其他的都是微不足道的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 2010-11-09
    • 2010-12-27
    • 1970-01-01
    • 2011-05-05
    相关资源
    最近更新 更多