在目录中查找形状文件

1 投票
1 回答
692 浏览
提问于 2025-04-18 02:38

我有一个文件夹,里面存放着按年和月分类的潮汐数据,以及这些潮汐影响的行政区域(比如1977年7月的潮汐和它影响的乡镇列表)。我还有一个按月和年分类的降水数据文件夹。我需要进行一个叫做“近邻”的地理信息系统操作,然后把降水数据和潮汐数据合并在一起,这样潮汐的月份和年份就能和降水的月份和年份对应上。

一般来说,我描述的这个过程的伪代码大概是这样的:

for (1977到2006年的潮汐数据) {
    if(潮汐==1977年7月) {
        从文件夹中找到1977年7月的降水数据
        对找到的文件进行“近邻”操作
        通过NearFID把1977年7月的潮汐数据和降水数据合并在一起
    }
}

我想知道如何用Python来实现这个过程,以及如何在文件夹中搜索需要的文件。

1 个回答

1

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

  1. 所有的降水 shapefile 文件都在一个文件夹里。
  2. 降水文件的文件名里有一些随机的元素,所以我们不能直接通过文件名来找到它们。
  3. 降水文件的文件名中包含可以识别的月份和年份。

在这些假设的基础上,我们可以使用 Python 的 glob 模块来找到特定月份和年份的 shapefile 文件。

假设涌流文件在这个目录下(/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 会比较困难,不过其他的假设就简单多了。

撰写回答