在目录中查找形状文件
我有一个文件夹,里面存放着按年和月分类的潮汐数据,以及这些潮汐影响的行政区域(比如1977年7月的潮汐和它影响的乡镇列表)。我还有一个按月和年分类的降水数据文件夹。我需要进行一个叫做“近邻”的地理信息系统操作,然后把降水数据和潮汐数据合并在一起,这样潮汐的月份和年份就能和降水的月份和年份对应上。
一般来说,我描述的这个过程的伪代码大概是这样的:
for (1977到2006年的潮汐数据) {
if(潮汐==1977年7月) {
从文件夹中找到1977年7月的降水数据
对找到的文件进行“近邻”操作
通过NearFID把1977年7月的潮汐数据和降水数据合并在一起
}
}
我想知道如何用Python来实现这个过程,以及如何在文件夹中搜索需要的文件。
1 个回答
1
根据提供的信息,我们需要做一些假设:
- 所有的降水 shapefile 文件都在一个文件夹里。
- 降水文件的文件名里有一些随机的元素,所以我们不能直接通过文件名来找到它们。
- 降水文件的文件名中包含可以识别的月份和年份。
在这些假设的基础上,我们可以使用 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 会比较困难,不过其他的假设就简单多了。