자세한 내용은 이 링크 를 참조하십시오.
문제 :
연속 래스터 (속성 테이블이없는 하나), 셀 단위 로 반복 하고 셀의 값을 얻고 싶습니다 . 실제로 래스터 계산기를 사용하지 않고 아래에 자세히 설명 된 대수 단계를 모방하여 그 값을 가져 와서 조건을 실행하고 싶습니다.
아래의 의견 요청에 따라 문제에 대한 배경 정보를 제공하고 아래의 "분석 필요 :"섹션과 같은 방법을 구현할 필요성을 정당화하는 세부 정보를 추가했습니다.
배경을 제공하여 내 문제와 관련이 있지만 아래 제안 된 분석은 대답으로 구현 할 필요가 없습니다. 질문의 범위는 셀 값을 얻거나 설정하기 위해 연속 래스터를 반복하는 것과 관련이 있습니다.
분석이 필요했습니다 :
다음 조건 중 하나라도 충족되면 출력 셀에 값 1을 지정하십시오. 조건이 충족되지 않은 경우에만 출력 셀 값을 0으로 지정하십시오.
조건 1 : 셀 값이 상단 및 하단 셀보다 큰 경우 값 1을 지정하십시오.
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
커널 파일은 다음과 같습니다.
3 3
0 1 0
0 0 0
0 1 0
조건 2 : 셀 값이 왼쪽 및 오른쪽 셀보다 큰 경우 값 1을 지정하십시오.
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
커널 파일은 다음과 같습니다.
3 3
0 0 0
1 0 1
0 0 0
조건 3 : 셀 값이 왼쪽 상단 및 오른쪽 하단 셀보다 큰 경우 값 1을 지정하십시오.
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
커널 파일은 다음과 같습니다.
3 3
1 0 0
0 0 0
0 0 1
조건 4 : 셀 값이 왼쪽 하단 및 오른쪽 상단 셀보다 큰 경우 값 1을 지정하십시오.
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
커널 파일은 다음과 같습니다.
3 3
0 0 1
0 0 0
1 0 0
조건 5 : 하면 모든 인접 셀들 중 하나가 중앙 셀에 EQUAL 값을 가지며, 1의 값을 래스터 출력을 제공 ( 두 가장 가까운 이웃 계산에 초점 다양한 사용 )
왜 대수를 사용하지 않습니까?
아래에서지도 대수를 사용하여 문제를 해결할 수 있지만 위와 같이 총 6 개의 래스터 계산과 함께 생성 된 모든 래스터를 결합하는 것입니다. 나에게 개별적으로 7 번 반복하고 7 개의 래스터를 만들기 위해 상당히 작은 메모리를 사용하는 대신 셀별로 이동하고 각 셀에서 한 번에 모든 비교를 수행 하는 것이 훨씬 더 효율적인 것 같습니다 .
문제를 어떻게 공격해야합니까?
위의 링크는 IPixelBlock 인터페이스를 사용하도록 권장하지만 실제로 IPixelBlock을 통해 단일 셀 값 자체에 액세스하는지 또는 설정 한 IPixelBlock 크기에서 여러 셀 값에 액세스하는지 여부는 ESRI 설명서에서 명확하지 않습니다. 좋은 답변은 연속 래스터의 셀 값에 액세스하는 방법을 제안하고 명백하지 않은 경우 코드 뒤에 방법론에 대한 설명을 제공해야합니다.
요약해서 말하자면:
CONTINUOUS 래스터 ( 속성 테이블 이 없는 )의 모든 셀을 반복 하여 셀 값에 액세스 하는 가장 좋은 방법은 무엇입니까 ?
좋은 답변은 위에서 설명한 분석 단계를 구현할 필요가 없으며 래스터의 셀 값에 액세스하는 방법론 만 제공하면됩니다.