2012-12-18 2 views
2

파이썬을 사용하여 netcdf 파일의 복사본을 만들고 싶습니다.파이썬을 사용하여 netcdf 파일 복사하기

netcdf-file을 읽거나 쓰는 방법에 대한 아주 좋은 예가 있지만, 다른 방법으로 변수의 입력과 출력을 만드는 좋은 방법이 있습니다.

최저 비용으로 출력 파일에 치수 및 치수 변수를 가져 오는 좋은 방법이 좋습니다.

+0

모듈 netCDF4를 사용하려고합니다. –

+0

아니요,이 질문을 해결하려고 시도한 것은 무엇입니까? 이것을 올리기 전에 어떤 연구를 했습니까? – IronMan84

+0

나는 stackoverflow와 웹에서도 해결책을 찾으려고했다. –

답변

-2

How do I copy a file in python? 참조 : 그것은 심지어 사용자의 요구

+0

OP는 한 형식의 형식에서 다른 형식으로 복사하려고했는데 이는 파일의 복사본과 매우 다릅니다. OpenDAP는 말할 것도없이 ... –

+0

@EliS OP는 OpenDAP URL이 아닌 netcdf * 파일 *을 * 복사 * (압축, 청크, 변환하지 않음) * 간단한 * 방법이 필요하다고 지정합니다. 다른 모든 것은 단지 추측 일뿐입니다. – furins

5

만 어떤 netCDF의-4 파일을 을 복사 netCDF의-4 API를 사용하려면를 맞아야 있도록 netCDF의 파일을 다른 파일 다르지 않다 임의의 사용자 정의 유형을 사용하는 변수는 어려운 문제입니다. netcdf4-python.googlecode.com의 netCDF4 모듈은 현재 가변 길이 멤버 또는 복합 기본 유형의 가변 길이 유형을 갖는 복합 유형을 지원하지 않습니다.

netCDF-4 C 배포에서 사용할 수있는 nccopy 유틸리티는 C netCDF-4 API 만 사용하여 임의의 netCDF-4 파일을 복사 할 수 있음을 보여 주지만 C API가 netCDF-4를 완벽하게 지원하기 때문입니다 데이터 모델. 목표를 googlecode 모듈에서 지원하는 플랫 유형 만 사용하는 netCDF-4 파일 복사로 제한하는 경우 nccopy.c에 사용되는 알고리즘이 제대로 작동해야하며 Python의보다 세련된 구현에 적합해야합니다.

netCDF-3에서 지원하는 고전적인 모델에는 사용자 정의 유형이나 재귀 유형이 없으므로, 더 쉽게 할 수있는 덜 야심적인 프로젝트 인 경우 netCDF "클래식 형식"파일을 복사하는 Python 프로그램이 있습니다. 이 프로그램은 압축 및 청킹과 같은 성능 기능을 사용하는 netCDF-4 클래식 모델 파일에서도 작동합니다.

3

나는이 질문에 대한 답변을 python netcdf: making a copy of all variables and attributes but one에 찾았지만 내 버전의 python/netCDF4 (Python 2.7.6/1.0.4)에서 작동하도록 변경해야했습니다. 요소를 더하거나 뺄 필요가있는 경우 적절하게 수정합니다.

import netCDF4 as nc 

def create_file_from_source(src_file, trg_file): 
    src = nc.Dataset(src_file) 
    trg = nc.Dataset(trg_file, mode='w') 

    # Create the dimensions of the file 
    for name, dim in src.dimensions.items(): 
     trg.createDimension(name, len(dim) if not dim.isunlimited() else None) 

    # Copy the global attributes 
    trg.setncatts({a:src.getncattr(a) for a in src.ncattrs()}) 

    # Create the variables in the file 
    for name, var in src.variables.items(): 
     trg.createVariable(name, var.dtype, var.dimensions) 

     # Copy the variable attributes 
     trg.variables[name].setncatts({a:var.getncattr(a) for a in var.ncattrs()}) 

     # Copy the variables values (as 'f4' eventually) 
     trg.variables[name][:] = src.variables[name][:] 

    # Save the file 
    trg.close() 

create_file_from_source('in.nc', 'out.nc') 

이 스 니펫은 테스트를 마쳤습니다.

관련 문제