2014-04-14 4 views
1

나는 년과 월별 서지 데이터와 영향을받은 관리 단위 (예 : 1977 년 7 월의 서지와 영향을받은 커뮤너티 목록)가있는 파일 디렉토리가 있습니다. 나는 또한 강수량 자료의 디렉토리를 월 단위로 가지고있다. 니어 (Near)라는 하나의 GIS 연산을 수행 한 다음, 강수량 데이터와 서지 데이터를 표로 결합하여 서지 월/년이 강우 월/일과 일치하도록해야합니다. 일반적으로디렉토리 내의 shapefile 검색

, 내가 설명하고있어 프로세스에 대한 의사 코드는 다음과 같다 : (1977 년부터 2006 년에 서지)에 대한 { 경우 (7 월 서지 == 1977) 디렉토리 가입일 July { 찾기 침전 1977 표 서지 1977 년 7 월에 가입 할 발견 된 그 파일에 가까운 실행 강수 확률 1977 7월

어떻게 파이썬에서이 과정을 수행하는 방법 디렉토리에 필요한 파일을 검색 NearFID } }으로?

+0

데이터 파일의 월 및 연도를 어떻게 알 수 있습니까? 파일 이름의 일부입니까? – wwii

+0

@wwii 예, 서지 파일의 경우 country_surgeName_year_month로, 강수량 파일의 경우 precip_year_month로 이름을 지정했습니다. – atoregozh

답변

1

는 제공된 정보를 제공, 우리는 몇 가지 가정을해야합니다 :

  1. 모든 강수 모양 파일이 하나의 디렉토리에 있습니다.
  2. 침묵 파일은 파일 이름에 임의의 요소가 있으므로 내부에서 이름을 기준으로 셰이프 파일을 직접 참조해야합니다.
  3. 강우 파일의 파일 이름은 월 및 연도로 식별 할 수 있습니다.

이러한 가정을 감안할 때 파이썬의 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 아이알.