제3장부터 제5장까지는 WIA-ENE-057 구현체가 무엇을 저장하고, 어떻게 조회되며, 데이터가 어떤 경로로 전송되는지를 설명했다. 그러나 그 어느 것도 단독으로는 쓸모가 없다. 건조지 모니터링 플랫폼은 그 레코드가 정책과 자금을 결정하는 과정에 들어갈 때 비로소 가치를 가진다. 토지황폐화중립(LDN)에 관한 국가 보고, 관측의 대부분을 공급하는 위성 아카이브, 농업·토양 데이터베이스, 수천 곳의 식재지를 조율하는 복원 프로그램, GIS 분석 부서, 현장 조사 앱, 그리고 점점 비중이 커지는 탄소 시장이 그것이다. 표준의 PHASE-4인 통합 명세(Integration Specification)는 이들 각각에 대한 연계 방식을 개략적으로 제시한다.
이 장은 PHASE-4를 그 연계 모듈을 직접 만들어야 하는 엔지니어의 눈으로 읽는다. 각 절은 상대 측 프로세스가 실제로 무엇을 필요로 하는지, 어떤 WIA 레코드가 그것을 공급하는지, 명세의 예시 객체가 어떤 모습인지, 그리고 그 예시를 문자 그대로 받아들여서는 안 되는 지점이 어디인지를 설명한다. 마지막 항목은 이 책의 다른 어느 부분보다 여기서 중요하다. PHASE-4는 UNCCD, FAO, NASA, ECMWF, 그레이트 그린 월, Verra 같은 실재 기관의 이름을 예시용 엔드포인트와 수치 옆에 나란히 적는다. 표준이 정의하는 것은 교환의 형태다. 표준은 이들 기관 어느 곳과도 제휴 관계를 맺고 있지 않으며, 예시에 등장하는 호스트명을 실제 운영 중인 공식 API로 읽어서는 안 된다. 이 장 전체의 예시 위치는 SAHEL-REGION-001(위도 14.5, 경도 −4.0, 10,000 ha)이고, 명세에서 인용한 수치는 모두 예시 값이며 사헬이나 말리에 관한 통계가 아니다. 이 장의 연계 모듈이 받아 쓰는 요청·응답 형태는 이 장 아래에 연결된 시뮬레이터 패널 2, 곧 API와 WebSocket 시연이 있는 「3. 프로토콜」 탭에서 확인할 수 있다.
유엔사막화방지협약(UNCCD)에 따라 당사국은 SDG 지표 15.3.1, 곧 전체 토지 면적 가운데 황폐화된 토지의 비율을 보고한다. 이 지표는 토지 피복, 토지 생산성, 토양유기탄소(SOC) 저장량이라는 세 하위 지표로 구성된다. 각 하위 지표는 기준 시점과 이후 보고 기간 사이에서 비교되고, 셋은 "하나라도 나쁘면 전부 나쁘다(one out, all out)" 원칙으로 결합된다. 즉 세 지표 중 어느 하나라도 유의한 부정적 변화를 보이면, 나머지 둘이 개선되었더라도 그 토지 단위는 황폐화된 것으로 본다. 토지황폐화중립은 정해진 시간적·공간적 범위 안에서 토지 자원의 양과 질이 안정적으로 유지되거나 늘어난 상태를 말하며, 황폐화를 회피·저감·역전하여 손실을 이득으로 상쇄함으로써 달성한다.
구현자에게는 세 가지 결론이 따른다. 첫째, 평가 단위는 현장 평균이 아니라 지도다. 토지 피복 변화는 화소마다 등급 간 전이로 평가되고, 각 전이는 황폐화·개선·안정 중 하나로 판정된다. 생산성 동태는 시계열에서 궤적 등급으로 분류된다(UNCCD 우수 실무 지침에서는 흔히 감소, 감소 조짐, 안정적이나 스트레스, 안정, 증가의 등급을 쓴다). 토양유기탄소는 기준 표토 깊이에 대한 저장량으로 평가한다. 둘째, 공식 국가 보고는 협약 자체의 보고 절차와 각국이 지정한 담당 기관을 거친다. WIA 플랫폼은 그 절차에 쓰일 근거 자료와 표를 준비할 뿐 절차를 대신하지 않는다. 셋째, 국가 보고 주기는 수년 단위다. PHASE-4 설정의 분기(quarterly) 주기는 내부 산출 주기이지 협약의 일정이 아니다.
각 하위 지표는 특정 WIA-ENE-057 레코드로 추적할 수 있다. 아래 대응 관계가 LDN 내보내기 어댑터가 구현하는 내용이며 이 연계의 핵심이다. 이것을 문서로 남기지 않으면 두 플랫폼이 같은 현장을 서로 다른 결과로 보고하고도 그 이유를 누구도 설명하지 못한다.
| LDN 하위 지표 | WIA 원천 레코드와 필드 | 어댑터에서의 계산 | 함께 기록해야 할 것 |
|---|---|---|---|
| 토지 피복(변화) | landUseData.classification.*(등급별 면적과 비율), 수집 단계에서 참조한 분류 래스터 | 기준·현재 지도 사이의 화소 단위 전이 행렬, 각 전이를 황폐화·안정·개선으로 표시 | 등급 범례와 보고용 등급으로의 대응표, 지도 출처와 해상도, 최소 도면화 단위 |
| 토지 생산성 동태 | vegetationData.indices.ndvi/evi 시계열, biomass.aboveGround, trendAnalysis | 보고 기간의 궤적과 상태(제2장의 추세 기법), 가능하면 강수 보정 | 산출물과 컬렉션(예: MOD13Q1), QA 필터링, 합성 기간, 추세 기법과 유의성 |
| 탄소 저장량(SOC) | 깊이·용적밀도를 포함한 soilData.chemistry.organicMatter, 보고서의 탄소 저장량 블록 | 기준 깊이에 대한 SOC 저장량(t C/ha)과 기간 간 변화 | 채취 깊이, 용적밀도, 유기물→탄소 환산 계수, 분석 방법 |
| (하위 지표가 아닌 맥락) | restorationProject, rainfallData, erosionData | 변화의 원인을 설명하고 개선을 사업에 귀속 | 사업 면적을 헥타르 값만이 아니라 도형으로 |
unccdLdnReport 예시 읽기PHASE-4 §1.1은 unccdLdnReport 객체를 정의한다. 여기에는 reportingCountry(ISO 3166-1 alpha-3, 예시에서는 MLI), reportingYear와 reportingPeriod, locations[] 배열, nationalSummary가 들어 있다. 각 위치는 좌표와 면적, 그리고 landCover·landProductivity·carbonStocks로 이루어진 ldnIndicators 블록을 가지며, 각 항목은 baseline과 current, 경우에 따라 change로 나뉜다. 예시 값들은 서로 다른 방향을 가리키기 때문에 오히려 좋은 교재가 된다.
| 블록 | 기준(2015) | 현재(2025) | 방향 |
|---|---|---|---|
| 토지 피복 비율 | 산림 12.0 %, 초지 38.0 %, 농경지 45.0 %, 나지 5.0 % | 산림 15.2 %, 초지 42.3 %, 농경지 40.5 %, 나지 2.0 % | 목본·초본 피복 쪽으로 순 이동 |
| 생산성 | NDVI 0.45, 바이오매스 3.2 | NDVI 0.35, 바이오매스 2.4 | 감소(추세 플래그 설정) |
| 탄소 저장량(t C/ha) | SOC 18.5, 지상부 2.8, 지하부 1.2(합계 22.5) | SOC 19.8, 지상부 3.5, 지하부 1.6(합계 24.9) | 2.4 t C/ha 증가 |
이 수치에 "하나라도 나쁘면 전부 나쁘다" 원칙을 적용하면 이 현장은 황폐화된 것으로 판정된다. 생산성이 감소했고, 피복과 탄소의 개선이 그것을 상쇄하지 못한다. 가중 평균을 보고하거나 탄소 증가를 부각하는 어댑터는 현장을 잘못 전달하는 셈이다. 두 가지를 더 짚어 둘 만하다. 토지 피복 블록은 순 비율을 보고하는데, 순 비율은 총 전이를 가릴 수 있다. 한쪽 구석에서 농경지 5 %가 나지로 바뀌고 다른 곳에서 휴경지 5 %가 농경지로 편입되면 순 비율 표에는 아무 변화도 나타나지 않는다. 따라서 적합한 내보내기는 합계만이 아니라 전이 행렬을 보존한다. 또한 생산성 감소와 목본 피복 증가는 물리적으로 양립시키기 어렵다. 실제 데이터에서 이런 긴장이 보이면 보고에 앞서 센서 연속성, 합성 방식, 강수를 먼저 점검해야 한다.
예시에는 progress, neutralityGap, projectedAchievement를 담은 ldnStatus 블록도 있다. 이것은 UNCCD의 지표가 아니다. LDN은 진척률로 표현되지 않으며 협약은 "중립 격차" 점수를 정의하지 않는다. 구현체가 내부 대시보드용으로 이런 필드를 둘 수는 있지만, 외부로 나가는 어떤 문서에서도 LDN 결과라고 표기해서는 안 된다. nationalSummary도 마찬가지로 그 수치는 객체의 형태를 보여 주기 위한 자리표시자다. 끝으로 명세의 기준 연도 2015는 단일 연도 예시다. LDN 기준값은 보통 여러 해에 걸친 기간에서 도출하므로, 어댑터는 단일 연도가 아니라 기준 기간을 명시적으로 저장해야 한다.
PHASE-4는 여섯 단계를 제시한다. 모니터링 데이터 수집, LDN 지표 계산, 보고서 생성, 제출, 검증 응답 수신, 제출 확인 저장이다. 실무에서 "제출" 단계는 국가 담당 기관이 쓰는 경로를 향한다. 명세의 baseUrl https://api.unccd.int/ldn/v1은 예시일 뿐 문서화된 UNCCD 공개 서비스가 아니며, 예시에 나오는 @wia/ene-057-integrations SDK도 배포된 패키지가 아니다. 견고한 설계는 내보내기를 서명되고 버전이 붙은 문서로 다룬다. 어댑터는 표와 지도를 생성하고, 입력 레코드의 ID와 해시를 기록하며, 그 패키지를 국가 보고 책임자에게 넘긴다. 그러면 "검증 응답"은 HTTP 상태 코드가 아니라 누가, 언제, 어느 버전을 대상으로 패키지를 검토했는지를 남기는 검토 기록이 된다. 제4장의 POST /reports/unccd-ldn 엔드포인트가 이 작업의 자연스러운 시작점이다.
WIA-ENE-057 관측값의 대부분은 현장 팀이 아니라 위성 아카이브에서 온다. PHASE-4 §4는 MODIS(NDVI, EVI, 지표면 온도), Landsat 8/9, Sentinel-2, SMAP을 열거한다. nasaEarthDataIntegration 예시는 세 산출물을 설정한다. MOD13Q1(NDVI·EVI, 250 m, 16일), Landsat 8 지표 반사율 산출물(밴드 B4·B5·B6, 30 m. 표 2-2에는 EVI 계산에 필요한 청색 밴드 B2도 함께 적었다), SPL4SMGP(토양수분, 9 km)이며, 자동 다운로드가 처리 파이프라인으로 이어지도록 선언한다. NASA Earthdata에서 내려받으려면 사용자 계정과 토큰이 필요하다. 예시는 설정 객체 안에 토큰 필드를 두지만, 자격 증명은 설정이 아니라 비밀 저장소에 두어야 한다.
[1] 그래뉼 다운로드(HDF) 위치 경계 상자를 덮는 타일, 새 16일 주기
|
[2] 레이어 추출 NDVI, EVI, VI 품질, 화소 신뢰도; 스케일 0.0001 적용
|
[3] WGS84로 재투영 산출물의 사인 곡선 격자 -> EPSG:4326
|
[4] 관심 지역 자르기 GET /locations/{locationId}의 위치 폴리곤
|
[5] 구역 통계 위치별 평균, 중앙값, 표준편차, 유효 화소 비율
|
[6] vegetationData로 저장 id VEG-YYYYMMDD-..., source, resolution, cloudCover, quality
|
[7] 추세 분석 트리거 trendAnalysis 갱신; data.created 발행
|
[8] 경보 규칙 평가 예: rapid-vegetation-decline -> 웹훅 alert.triggered
여덟 단계는 이름을 붙이기는 쉽지만 미묘하게 틀리기도 쉽다. 2단계에서 MOD13Q1은 지수를 스케일된 정수로 저장하므로, 0.0001 계수를 빠뜨리거나 두 번 적용한 파이프라인은 검증에서 요란하게 실패하거나 0 근처 값으로 조용히 통과하는 값을 만든다. 품질 레이어도 이 단계에서 읽어야 한다. 구름이나 눈으로 표시된 합성 화소는 평균에 넣지 말고 마스킹해야 한다. 3단계의 재투영은 리샘플링 선택이 개입하는 지점이다. 최근린 방식은 원래 화소 값을 유지하므로 지수에는 대개 이 방식이 맞다. 쌍선형 보간은 화소를 섞어 수면이나 나지를 식생 쪽으로 번지게 할 수 있다. 4단계의 자르기 도형은 손으로 입력한 상자가 아니라 위치 레코드에서 가져와야 한다. §4.1 구독 예시의 경계 상자(남 14.0, 북 15.0, 서 −4.0, 동 −3.0)는 위치 자신의 경도를 상자의 서쪽 가장자리에 놓는데, 이런 상자가 얼마나 쉽게 틀리는지 보여 주는 사례다.
5단계는 "현장 값"이 무엇을 뜻하는지를 결정한다. 10,000 ha 위치에서 MOD13Q1은 대략 1,600개 화소를 준다(250 m 화소 하나가 약 6.25 ha). 어댑터는 평균만이 아니라 유효 화소의 개수와 비율도 저장해야 한다. 구름을 마스킹한 뒤 면적의 40 %로 계산한 평균과 95 %로 계산한 평균은 서로 다른 측정이며, metadata.quality에 그 차이가 반영되어야 한다. 6단계는 source와 resolution 필드에 산출물을 명시하고 PHASE-1 패턴을 따르는 ID로 vegetationData 레코드를 기록한다. 이 업서트는 레코드 ID 기준으로 멱등이어야 한다. 그래야 산출물 재배포 후 같은 기간을 재처리할 때 중복이 아니라 교체가 일어난다. 7·8단계는 파이프라인을 제5장의 이벤트 모델과 잇는다. 새 레코드가 추세 갱신과 경보 규칙을 트리거하고, 경보는 alert.triggered 웹훅으로 나간다.
세부 사항만 다를 뿐 같은 파이프라인이 적용된다. Landsat 지표 반사율 산출물은 컬렉션마다 자체 스케일과 오프셋을 가지며, Landsat 8의 B4(적색)와 B5(근적외선)로 30 m NDVI를 계산하고, B6(단파적외선)은 수분에 민감한 지수에 유용하다. Sentinel-2는 10 m 적색·근적외선 밴드와 구름 마스킹용 장면 분류 레이어를 제공한다. Landsat과 Sentinel-2는 MODIS가 구분하지 못하는 개별 복원 구획과 반달형 집수구 밭을 분해하지만, 그 대가로 구름 공백이 더 많다. SMAP SPL4SMGP는 모델 동화를 거친 9 km 격자의 레벨-4 산출물로 하루보다 짧은 시간 간격으로 발행된다. 명세의 "일(daily)" 주기는 문서화된 일 단위 집계로 구현하는 것이 좋다. 9 km 격자 하나는 많은 사업 지역보다 크므로, SMAP 값은 soilData 레코드의 광역 맥락에 두고 moisture.depthProfile[]의 현장 센서 값과 명확히 구분해야 한다.
PHASE-4 §7은 NOAA Climate Data Online, ECMWF, 세계기상기구(WMO), 지역 관측소를 기후 자료원으로 든다. ECMWF의 ERA5 재분석 자료는 강수, 토양수분, 증발 등을 0.25도 격자에 시간 단위로 제공하며, 여기서 잠재증발산량과 건조도 맥락을 도출할 수 있다. NOAA Climate Data Online은 주로 관측소 기록을 제공하므로, 명세 예시의 "1km, global" 설명은 예시로 보아야 한다. rainfallData에 대해 어댑터는 지역 우량계가 있으면 그것을 우선하고, 없으면 격자 산출물로 채우며, 값마다 출처를 기록해야 한다. 우량계 합계와 재분석 합계를 표시 없이 한 시계열에 섞으면 인위적인 추세가 생긴다. 예시의 processingPipeline 블록(WIA 형식으로 표준화, 시계열 데이터베이스에 저장, API와 WebSocket으로 제공)은 제7장에서 전개할 목표 아키텍처를 잘 요약한다.
토지 이용과 방목 압력은 영상보다 농업 통계로 더 잘 설명되는 경우가 많다. PHASE-4 §2.1은 FAO와의 양방향 교환을 제안한다. 작물 생산량과 가축 밀도 같은 지표를 가져오고, 토양 건강 요약을 보내는 것이다. 명세의 가져오기 쪽은 API 키와 SDK를 쓰지만, 실제로 FAOSTAT는 데이터를 공개로 배포하므로 어댑터는 관련 영역을 내려받아 버전과 다운로드 일자와 함께 참조 테이블로 저장하면 된다. 이 통계는 국가나 하위 행정 단위 수준이다. landUseData.pressure에 맥락을 더하지만 현장 수준의 사육 밀도 추정을 대체하지는 못한다.
보내기 쪽인 faoDataSubmission은 dataType, 국가와 지역, locationId별 measurements 목록(토양 유형, 유기물, pH, 침식 위험, 황폐화 수준), methodology 기술을 담는다. 주의할 점이 두 가지 있다. qualityAssurance 값 "ISO-19115-compliant"는 메타데이터 적합성을 가리킨다. ISO 19115는 지리 메타데이터 표준으로 토양 측정의 정확도에 대해서는 아무것도 말하지 않으므로, 이 주장은 "ISO 19115에 정렬된 메타데이터"로 표현해야 한다. 또 예시의 지역명("Kayes")은 자유 입력 텍스트다. 행정 구역명은 위치 도형을 관리되는 경계 데이터셋과 공간 결합하여 산출해야 하며 손으로 입력해서는 안 된다. 자유 입력 지역명은 집계 통계에서 레코드가 엉뚱한 곳에 배정되는 가장 흔한 원인이다.
글로벌 토양 파트너십(Global Soil Partnership) 예시는 API가 아니라 데이터 공유 협정이다. 토양수분, 토양 화학, 침식 평가를 매월, 토양 마크업 형식으로, CC-BY-4.0 라이선스에 따라 공유한다. 엔지니어가 흔히 놓치는 부분이 라이선스다. CC-BY-4.0은 출처 표시를 조건으로 재사용을 허용하므로 공개 보고와는 잘 맞지만, 토지 소유자 동의 같은 원 현장 자료의 제약과 충돌하지 않는지 확인해야 한다. WIA 레코드는 라이선스와 출처 표시 문자열을 지녀서 하류 사본에서도 보존되게 해야 한다. 교환 형식에 관해서는 ISO 28258(토양 관련 데이터의 디지털 교환)이 관련 국제 기준이며, WIA 어댑터는 독자 스키마를 새로 만들기보다 soilData 필드를 여기에 대응시킨다. 결정적인 것은 단위다. 제3장에서 필드별 단위를 권고했는데, 그 권고가 여기서 효과를 낸다. 상대 기관은 유기물 값이 백분율인지 농도인지 짐작할 수 없기 때문이다.
PHASE-4 §5는 waterResourceData 교환을 기술한다. 지표수, 지하수(수위 깊이, 수질, 취수율), 강수 신뢰도, 빗물 집수 시설, 관개(방식, 면적, 효율, 수원), 가뭄 지표가 들어간다. 복원 계획자가 어떤 식재 설계가 건기를 버틸 수 있는지 판단할 때 필요한 입력이다. 이 예시는 지수마다 별도의 분류가 필요한 이유도 보여 준다. 예시는 SPI −1.8과 PDSI −2.5에 "moderate-drought"라는 하나의 등급을 붙인다. 파머 척도에서 −2.5는 보통 가뭄 구간(−2.0~−2.99)에 들지만, McKee SPI 등급에서 −1.8은 심한 건조에 해당한다. 하나의 등급으로 둘을 동시에 설명할 수 없다. 어댑터는 지수의 시간 규모와 기준 기간과 함께 지수별 등급을 저장해야 한다. 예시의 집수 시설 capacity에는 단위도 없다. 작은 누락이지만 사업들 사이에서 리터와 세제곱미터 단위의 용량을 합산할 때 큰 오류가 된다.
§5의 협력 절차(수요 평가, 가용 자원 확인, 공동 계획, 실행, 환류)는 API 호출이 아니라 관리 절차다. 명세는 세계물위원회(World Water Council)를 상대로 적지만 표준은 그런 제휴를 맺고 있지 않으며, 대부분의 배치에서 실제 상대는 국가 수자원 기관이나 유역 관리 기관이다.
복원 사업이 하나의 프로그램에만 보고하는 경우는 드물다. 사헬의 한 식재지는 한 나라의 그레이트 그린 월 사업에 속하면서, 그 나라의 AFR100이나 본 챌린지 서약 실적에 포함되고, 나무 심기 단체를 통해 묘목을 받을 수 있다. PHASE-4 §3과 §6은 이를 개별 맞춤 연계가 아니라 연계 역할로 모델링한다.
| 프로그램 | 예시에서의 역할 | 공유 데이터 | WIA 원천 |
|---|---|---|---|
| 그레이트 그린 월 | 진척을 추적하는 지역 이니셔티브 | 복원 면적, 생존율, 녹색 띠 길이, 피복 변화 | restorationProject.progress, outcomes, vegetationData |
| Trillion Trees | 수종 데이터베이스 | 수종, 생존율, 실무 사례 | interventions.reforestation.species[] |
| Plant-for-the-Planet | 모니터링 플랫폼 | 나무 수, 위치, 검증 | 개체목 등록부 레코드 |
| AFR100 / 본 챌린지 | 경관 복원 | 복원 계획, 진척 보고, 재원 | restorationProject의 일정, 마일스톤, funding |
이 역할은 어떤 종류의 데이터가 흐를 수 있는지를 기술할 뿐, 이들 단체가 WIA 데이터를 받기로 합의했다는 뜻이 아니다. 실제 배치에서 각 연계 모듈은 협정마다 따로 설정한다.
greatGreenWallIntegration 객체는 프로그램 사업 ID를 회랑(corridor), 구간(segment), WIA locationId에 연결하고, 진척 지표, 모니터링 주기와 방법, 협력 플래그를 담는다. 대시보드 엔드포인트 GET /api/v1/integrations/great-green-wall/dashboard는 개요, 지역별 진척, 최근 갱신을 반환한다. 예시 응답의 집계 값은 자리표시자이며 그레이트 그린 월 통계로 읽어서는 안 된다. 이 이니셔티브는 자체 수치를 따로 발표한다.
더 배울 점이 있는 세부 사항은 불일치다. 통합 객체의 나무 수는 같은 현장의 restorationProject 레코드에 있는 수종별 수량의 합과 맞지 않는다. 명세에서는 편집상의 실수지만, 운영 환경에서는 바로 이것이 복원 실적을 믿기 어렵게 만드는 이중 계상 문제다. 어댑터의 규칙은 프로그램에 보내는 수치를 언제나 정본 WIA 레코드에서 도출하고 별도로 입력하지 않는 것이며, 모든 내보내기에는 근거가 된 레코드 ID를 붙인다. 한 현장이 세 프로그램에 보고한다면, 따로 관리되는 세 개의 수치가 아니라 세 프로그램 ID가 모두 태그된 하나의 식재 수를 보고한다.
PHASE-4 §6.2는 treeId, 수종, 식재일, 좌표, 연결된 projectId(REST-2025-SAHEL-001), 검증 상태와 일자, 생존 상태, 인증서 URL로 이루어진 개체목 등록부를 제시한다. 이 구조는 생존 모니터링과 감사 표본 추출에 유용하다. 감사인은 나무 ID를 무작위로 뽑아 현장이나 초고해상도 영상에서 확인할 수 있다.
명세는 이 등록부를 스마트 계약과 토큰 ID를 갖춘 분산 원장 위에 둔다. 이는 가능한 설계 중 하나이며 선택 사항이다. WIA-ENE-057은 블록체인을 요구하지 않는다. 표준 자체의 무결성 장치는 제8장에서 설명하는 서명된 매니페스트와 Sigstore/Rekor 투명성 로그다. 원장을 고르기 전에 실무적인 질문을 따져 보아야 한다. 공동체 토지나 사유지에 심은 나무의 개체별 위치는 민감할 수 있다. 생존 상태는 시간에 따라 바뀌므로 토큰보다 관측을 덧붙여 가는 기록 방식이 더 맞다. 그리고 변경 불가능성이 거짓 기록을 참으로 만들지는 않는다. 서명된 추가 전용 테이블에 주기적 앵커링을 더하면 그런 비용 없이도 변조 증거를 확보할 수 있다.
분석가는 주로 GIS 소프트웨어를 통해 WIA 데이터를 소비한다. PHASE-4 §8.1은 두 레이어를 가진 ArcGIS Online 피처 서비스를 보여 준다. 폴리곤 레이어 "Desertification Risk"(필드 locationId, riskScore, category, 단계 구분 색상, 주 1회 갱신)와 포인트 레이어 "Vegetation Monitoring Points"(ndvi, evi, timestamp, 매일 갱신)다. 예시의 조직 URL은 예시일 뿐이다. 상용 플랫폼에 게시하는 것은 편의의 문제이고, 벤더 중립적인 경로는 제5장에서 설명한 OGC WMS·WFS·WCS 엔드포인트다. QGIS와 ArcGIS Pro를 포함한 어떤 데스크톱 GIS도 이를 읽을 수 있다.
어느 경로든 두 가지 설계 원칙이 적용된다. 위험 레이어에는 점수 산출 방법의 버전과 평가 일자를 넣어야 한다. 제4장에서 보았듯 명세는 등급 임계값을 정의하지 않으므로, 그 근거 없이 위험 등급만 칠한 지도는 해석할 수 없다. 그리고 식생 지수 포인트 레이어에는 산출물과 품질 플래그가 들어가야 한다. 250 m MODIS 값과 10 m Sentinel-2 값을 섞은 지도는 연속적으로 보이지만 실제로는 그렇지 않다.
§8.2의 QGIS 플러그인 메타데이터는 XML로 제시되어 있다. 실제 QGIS 플러그인은 메타데이터를 metadata.txt 파일에 선언하므로, 이 예시는 파일 형식이 아니라 기능 목록, 곧 현재 식생 지수 불러오기, 위험 계산, 복원 계획 생성, LDN 보고서 내보내기로 읽어야 한다. 플러그인은 PHASE-2 API의 얇은 클라이언트로서 그 인증 방식을 그대로 따르며, 배포되는 코드에 공용 API 키를 넣어서는 안 된다.
지상 관측은 영상 보정과 복원 검증에 여전히 필수적이다. PHASE-4 §10.1은 ODK 양식 wia-ene-057-field-survey 1.0.0 버전을 보여 준다. 필수 geopoint, locationId, 소수형 식생 피복, select1 토양 유형(sandy, loam, clay), 현장 사진으로 구성되며 /v1/mobile/submission으로 POST 제출된다. 이 XML은 단순화한 스케치다. ODK 양식은 보통 XLSForm으로 작성해 XForms로 배포하고, 제출물은 대개 ODK 서버에 쌓인 뒤 어댑터가 가져온다. 어느 경로를 택하든 어댑터에는 세 가지 대응 작업이 있다.
coordinates 객체로 나누고 정확도 값을 보존해야 한다. 구획 경계 부근에서 정확도 30 m로 기록된 점은 이웃 구획에 속할 수도 있기 때문이다.soilData.soilType의 토성 값(예시에서는 sandy-loam)과 맞지 않는다. 현장 선택지가 어떤 WIA 값이 되는지 대응표로 정하거나, 양식을 WIA 어휘를 직접 쓰도록 확장해야 한다.§10.2의 모바일 SDK 예시는 vegetationHealth: 'fair', soilMoisture: 'low' 같은 관찰을 사진, 메모와 함께 오프라인 모드로 기록하며 syncInterval은 3,600,000 ms(1시간)다. 연결이 간헐적인 건조지에서는 오프라인 우선 동작이 옳다. 데이터 품질 문제는 예측 가능하다. 휴대전화 GPS 오차, 관찰자마다 다른 주관적 등급, 동기화 실패 뒤의 중복 업로드, 며칠씩 오프라인이었던 기기의 시계 오차다. 주민 관찰은 관찰자의 교육 수준과 그에게 제시된 등급 정의를 함께 담은 별도의 관찰 유형으로 저장하고, 지표의 직접 입력이 아니라 전문가 확인이 필요한 장소를 표시하는 데 써야 한다. 사진은 6.7절에서 다룰 프라이버시 문제를 낳는다. EXIF 메타데이터에는 정밀한 위치와 기기 정보가 담길 수 있고, 가옥 사진은 그 소유자를 식별할 수 있다.
복원 사업은 점점 더 탄소 금융에 눈을 돌리고 있으며, PHASE-4 §9에는 REST-2025-SAHEL-001에 대한 carbonCreditProject 예시가 있다. 그 탄소 저장량 수치(LDN 예시와 같은 값으로, 이것 자체가 자리표시자라는 표시다)로 산술 과정을 깔끔하게 따라가 볼 수 있다. 아래 수치는 예시 값이다.
예시(PHASE-4 §9의 값이며 측정값이 아님)
헥타르당 탄소 저장량(t C/ha) 기준 모니터링
지상부 바이오매스(AGB) 2.8 3.5
지하부 바이오매스(BGB) 1.2 1.6
토양유기탄소(SOC) 18.5 19.8
합계 22.5 24.9
헥타르당 변화 24.9 - 22.5 = 2.4 t C/ha
면적 450 ha(재조림 사업 구역)
총 탄소 2.4 x 450 = 1,080 t C
C를 CO2로 환산 x 44/12 (CO2 몰질량 / C 몰질량, 약 3.667)
CO2 환산량 1,080 x 44/12 = 3,960 t CO2e
44/12라는 계수는 탄소의 질량을 그 탄소를 포함하는 이산화탄소의 질량으로 바꾼다. 탄소 1톤은 CO₂ 약 3.67톤에 해당한다. 이 부분은 물리학이다. 그 주변의 모든 것은 가정이다. 위치 전체에서 측정한 헥타르당 변화를 450 ha 사업 구역에 적용하는 것은 변화가 정확히 그 면적에서 일어났다고 가정하는 것이다. 이 예시에서 증가분의 절반 이상이 SOC에서 나오는데(2.4 t C/ha 중 1.3), 몇 년 사이에 그 정도 크기의 SOC 변화는 공간 변이에 비해 작아서, 이를 검출하려면 충분한 수의 코어, 고정된 깊이, 매번 측정하는 용적밀도를 갖춘 표본 설계가 필요하다. 명세 안에서도 탄소 수치는 일관되지 않다. restorationProject의 성과 값과 LDN 요약은 이 3,960 t CO₂e와 다른 격리 총량을 제시한다. 구현체는 레코드에서 탄소를 계산하고 그 계산 과정을 보여 주어야 하며, 객체 사이에서 총량을 옮겨 적어서는 안 된다.
예시는 creditsPotential을 co2Equivalent와 같게 둔다. 피해야 할 오류가 바로 이 등식이다. 탄소 크레딧은 승인된 방법론에 따라 등록부가 발행하며, 저장량 변화 가운데 얼마가 크레딧으로 인정되는지는 방법론이 결정한다. 일반적으로 다음과 같은 조정이 적용된다.
따라서 저장량 변화 수치는 방법론이 인정할 수 있는 양의 상한이며, 대개 느슨한 상한이다. WIA 어댑터는 이 값을 "총 저장량 변화"로 표기하고, 버전이 기록된 방법론 계산에서 나온 값이 아니라면 creditsPotential을 비워 두어야 한다. 명세 예시는 특정 Verra 방법론 코드를 적고 있는데, 그 코드는 재조림 방법론에 해당하지 않는다. 이 책이 방법론 코드를 인용하지 않는 또 하나의 이유다. PHASE-4가 열거하는 등록부, 곧 Verra(VCS), Gold Standard, American Carbon Registry, Climate Action Reserve는 각자 고유한 방법론과 절차를 운영하며, 그중 무엇을 택할지는 사업의 결정이다. WIA-ENE-057의 역할은 방법론이 사용할 수 있도록 잘 문서화된 모니터링 레코드를 공급하는 것이며, 표준 자체가 사업을 크레딧 발행 대상으로 만들지는 않는다. 또한 LDN의 탄소 하위 지표와 탄소 크레딧은 서로 다른 질문, 즉 토지가 황폐화되고 있는가와 사업이 얼마만큼의 추가 흡수를 일으켰는가에 답한다는 점도 기억해야 한다. 한 숫자를 다른 이름으로 바꿔 붙여서는 안 된다.
이 장의 모든 연계 모듈은 외부 시스템에 대한 자격 증명을 보유하거나 외부 시스템에 데이터를 노출한다. PHASE-4 §11.1은 키 관리 정책을 정한다. 키는 90일마다 교체하고, 만료 7일 전에 경고하며, 암호화된 금고에 보관하고, 역할 기반으로 접근을 통제한다. 여기서 두 가지 실무가 따른다. 첫째, 상대 기관마다 필요한 최소 범위만 가진 별도의 자격 증명을 준다. LDN 내보내기 작업은 평가를 읽고 보고서를 쓰면 되며 복원 계획을 수정할 필요가 없다. 그래야 한 기관을 폐지해도 다른 연계가 깨지지 않는다. 둘째, 교체를 미리 연습해야 한다. 7일 전 경고는 조치할 수 있는 사람에게 전달될 때만 쓸모가 있으며, 어댑터는 교체 기간 동안 두 개의 유효한 키를 동시에 지원해야 한다.
| 등급 | 명세의 예 | 전형적인 WIA-ENE-057 내용 | 공유 규칙 |
|---|---|---|---|
| public(공개) | 집계 통계, 공개 보고서 | LDN 표, 게시된 위험 지도, 프로그램 요약 | 라이선스·출처 표시와 함께 공개 |
| internal(내부) | 상세 모니터링 데이터 | 위치별 레코드, 원시 센서 시계열 | 협정을 맺은 기관에 한정 |
| confidential(기밀) | 개인 식별자, 재무 데이터 | 조사자 이름·전화번호, 토지 소유자 정보, funding 세부 내역 | 업무상 필요한 경우만, 내보내기에서 최소화 |
| restricted(제한) | 보안 자격 증명 | API 키, 서명 키, 금고 토큰 | 절대 내보내지 않음 |
암호화는 표준의 다른 부분과 같다. 전송 중에는 TLS 1.3, 저장 시에는 AES-256-GCM이다. 사막화 플랫폼의 개인정보는 과소평가하기 쉽다. 현장 조사자, 주민 모니터, 토지 소유자는 이름, 전화번호, GPS 이동 경로, 사진을 통해 제출물에 등장한다. GDPR이 적용되는 경우 명세는 데이터 최소화, 열람, 삭제, 이동, 동의 관리 등 관련 권리와 원칙을 열거한다. 한국에서는 개인정보 보호법(K-PIPA)이 ODA 현장 사업을 운영하는 곳을 포함한 한국 사업자에게 비슷한 의무를 부과한다. 실무적으로는 플랫폼 밖으로 나가는 모든 레코드에서 조사자 ID를 가명 처리하고, 사진을 공유하기 전에 위치와 기기 관련 EXIF 필드를 제거하며(검증에 필요하면 원본은 제한 저장소에 보관한다), 공개 레이어에서는 가옥의 정밀 좌표를 일반화한다. 삭제 요청은 감사 보존과 조화를 이루어야 한다. 흔히 쓰는 방식은 개인 필드는 삭제하거나 가명 처리하고, 개인정보가 아닌 측정값과 그 해시 체인은 남기는 것이다.
| 지표 | 목표 | 측정 방법 |
|---|---|---|
| API 가용성 | 99.9 % | 역월 단위 합성 탐침의 성공 비율. 99.9 %는 30일 기준 약 43분의 중단을 허용한다 |
| 응답 시간 | p95 < 200 ms | 엔드포인트 그룹별 서버 측 지연. 대량 업로드와 보고서 생성은 제외 |
| 데이터 지연 | 실시간 데이터 5분 미만 | 센서 측정 시점부터 API나 스트림에서 조회 가능해질 때까지의 시간 |
| 오류율 | < 0.1 % | 전체 요청 대비 5xx 응답. 클라이언트 오류는 따로 보고 |
이 값들은 명세가 설계용으로 정한 목표이지 보장이 아니다. 연계에는 별도의 상태 보기가 필요하며, PHASE-4 §12.2는 이를 integrationHealth 객체로 제시한다. 상대 기관별로 상태, 마지막으로 성공한 동기화나 수신 시각, 성공·실패 건수, 데이터 품질 점수를 담는다. 가장 유용한 필드는 마지막 성공 시각이다. 연계는 대개 조용히 실패하기 때문이다. 토큰이 폐지되거나, 산출물 컬렉션 이름이 바뀌거나, 다운로드 경로가 달라진다. 오류가 없다는 이유로 "healthy"라고 표시되는 상태는 몇 주 동안 새 데이터가 없었다는 사실을 가릴 수 있다. 오류만이 아니라 데이터가 오래되었다는 사실에 대해서도 경보를 울려야 한다. 위성 지연은 또 다른 변수다. 16일 합성 산출물은 그 기간이 끝나고 며칠 뒤에야 제공되므로, 5분 데이터 지연 목표는 영상이 아니라 센서 스트림에 적용된다.
이 장의 내용을 모으면, 구현체는 다음과 같이 한곳에서 연계 모듈을 선언할 수 있다. 실제 엔드포인트는 상대 기관과의 협정에 따라 정해지므로 호스트명은 일부러 example.org를 썼다. 비밀 값은 값 자체가 아니라 금고 참조로만 적는다.
{
"integrations": [
{
"id": "ldn-export",
"kind": "report-export",
"trigger": "POST /api/v1/reports/unccd-ldn",
"reportingCountry": "MLI",
"locations": ["SAHEL-REGION-001"],
"baselinePeriod": { "start": "2000-01-01", "end": "2015-12-31" },
"ruleSet": "one-out-all-out",
"deliver": { "method": "signed-package", "recipient": "national-ldn-focal-point" },
"cadence": "P3M"
},
{
"id": "modis-ndvi",
"kind": "eo-ingest",
"product": "MOD13Q1",
"collection": "061",
"variables": ["NDVI", "EVI", "pixel_reliability"],
"scaleFactor": 0.0001,
"resampling": "nearest",
"clipTo": "location-geometry",
"credentialsRef": "vault://integrations/earthdata",
"writes": "vegetationData"
},
{
"id": "soil-share",
"kind": "data-sharing",
"dataTypes": ["soil-moisture", "soil-chemistry", "erosion-assessment"],
"cadence": "P1M",
"license": "CC-BY-4.0",
"endpoint": "https://soil-partner.example.org/upload"
},
{
"id": "field-survey",
"kind": "field-form",
"formId": "wia-ene-057-field-survey",
"formVersion": "1.0.0",
"vocabularyMap": { "soilType": "maps/odk-soil-to-wia.json" },
"privacy": { "pseudonymiseCollector": true, "stripPhotoExif": true }
}
],
"security": { "keyRotationDays": 90, "expiryWarningDays": 7 },
"health": { "alertIfNoSuccessFor": "PT48H" }
}
여기서 기준 기간과 48시간 무응답 임계값은 예시로 고른 값이며 표준이 정한 값이 아니다.
landUseData, vegetationData, soilData를 토지 피복, 생산성, SOC에 대응시키고 "하나라도 나쁘면 전부 나쁘다" 원칙으로 결합한다. 예시에서는 생산성 감소 때문에 피복과 탄소가 개선되었어도 현장이 황폐화로 판정된다. progress나 neutralityGap 같은 필드는 UNCCD 지표가 아니다.제7장은 이 연계 모듈들을 실제로 돌아가는 시스템으로 옮긴다. 참조 아키텍처, 배치 프로파일, 현장 연결성, 그리고 SAHEL-REGION-001의 한 계절을 따라가는 사례를 다룬다.