arc Binary Grid 포맷을 import ,export 하는 프로그램을 만들고 있습니다.
grid 데이터를 임포트 하여 좌표변환이나 트랜스를 하여 다시 grid 데이터로 내보내는 기능을 구현하려고하는데
라이브러리나 기타 관련 자료 있으시면 부탁좀 드립니다.
test.zip <- 샘플 파일
위 파일을 읽어 들이는 소스 부분은 아래와 같습니다.
파일을 이차원 배열로 읽어 들이면 다양한 알고리즘 개발이 가능합니다.
보간, 밀도 계산, 3D 표현 등...
파일 읽는 부분 소스는
BOOL COpenGLView::ReadASCFile()
{
char chTemp[20];
int nNoData;
FILE *stream;
stream=fopen((char*)(const char *)m_strFilePath, "r");
fscanf(stream, "%s %d", chTemp, &m_nCol);
fscanf(stream, "%s %d", chTemp, &m_nRow);
fscanf(stream, "%s %f", chTemp, &m_flx);
fscanf(stream, "%s %f", chTemp, &m_fly);
fscanf(stream, "%s %d", chTemp, &m_nCellSize);
fscanf(stream, "%s %d", chTemp, &nNoData);
if(m_bIsFileOpen==FALSE)
{
//메모리 할당
m_nsData = new double*[m_nRow];
for(int i=0; i<m_nRow; i++)
m_nsData[i] = new double[m_nCol];
}
//2차원 배열에 할당
GLshort nsTemp;
for(int i=m_nRow-1; i>=0; i--)
for(int j=0; j<m_nCol; j++)
{
fscanf(stream, "%d ", &nsTemp);
if(nsTemp==-9999)
m_nsData[i][j]=(double)(-1);
else
m_nsData[i][j]=(double)nsTemp;
}
fclose(stream);
return TRUE;
}
ArcGIS와 호환이 되는 ASC 파일 포멧이 있습니다.
당연히 ArcMap에서 import와 Export가 됩니다.
파일의 형태는 다음과 같습니다.
ncols 800
nrows 800
xllcorner 291500.000000
yllcorner 498750.000000
cellsize 50
NODATA_value -9999
실제 값 리스트~~~~~~~~~~~~~~~
수년 전에 DEM 등을 위와 같은 포멧으로 변환하여 수리수문 분석하는 간단한 프로그램을 작성한 적이 있습니다.
원하시는 내용인지 모르겠네요.