우선 이 프로젝트의 제일 큰 토대는 기상데이터, 지형데이터, 인적데이터에 따라 산불이 발생할 확률을 구하는 것이다.
산불은 매우 다양한 요인들에 의하여 발생하며 우리나라의 경우 최근 10년간 산불로 인한 피해가 급증하였다.
산불을 예측할 때 기상요인이야 당연하게 수집해야 할 것이며, 우리나라의 산불 발생의 80%가 인간 활동으로 인한 것이기 때문에 이러한 요인들도 반영해보고자 하였다.
그전에 이번 프로젝트는 강원도만을 한정지어서 진행하였다. 산불발생데이터가 각 지역마다 형식도 달랐고 데이터가 미비한 곳이 많았기 때문에 우리나라에서 가장 산불이 많이 발생하며 산맥이 있는 강원도를 타깃으로 하여 진행하였다.
1. 산불 발생 데이터 수집
우선 첫 번째로 할 것은 데이터 수집으로 강원도에서 발생한 산불들에 대한 데이터를 수집해야 했다.
데이터는 산림청의 산불피해대장 데이터를 받아서 가공하여 사용하고자 하였다.
우선 산불피해대장으로부터 데이터를 받으면 아래와 같이 정리가 되어있었는데, 발생위치의 정보가 경위도 형식이 아니라 시군구 형식으로 되어있어 정리가 힘들었다.
따라서 위의 주소를 우선 경위도 형식으로 바꿔줬다.
처음에는 geocoding을 이용해서 시도했었는데, 산불데이터의 형식이 이상해서 제대로 진행되지 않았다.
그래서 주소별 경위도가 매핑되어 정리되어 있는 자료를 이용해서 주소들을 경위도로 전부 변경하였고 강원도 지역에 해당하는 파일들만 뽑아냈다. (많은 과정들이 있었지만, 그냥 도로명주소->경위도로 변경했다고만 알아두면 될 것 같음)
또한 발생일시에 관련된 칼럼들을 정리하고 필요없는 컬럼들을 드롭함으로써 최종적으로 아래와 같은 강원도 산불 발생 파일을 생성하였다. 이 데이터에는 2011년~ 2021년의 데이터가 포함되어 있다.
2. 산불 발생하지 않은 데이터 생성
이렇게 강원도 지역의 산불이 발생한 데이터는 뽑아냈는데, 학습을 위해서는 산불이 발생하지 않는 날에 대한 데이터도 있어야 했다. (그래야 산불이 발생한 날은 라벨을 1, 발생하지 않은 날은 0)
따라서 임의의 데이터를 생성해야 하는데, 그냥 랜덤으로 뽑게 되면 추후에 학습할 때 데이터가 편향적으로 될 것 같았다.
따라서 산불이 발생한 데이터(실제 데이터)의 분포를 살펴보고 그에 맞게 계절, 시간대, 지역분포등을 고려하여 임의의 강원도에서 산불이 발생하지 않는 날, 발생하지 않은 지역을 임의로 뽑아냈다.
지금까지 수집한 데이터는 산불이 발생한 날/지역, 산불이 발생하지 않은 날/지역이었다.
3. 기상데이터 수집
자 정리해 보자. 우리는 지금 기상에 따른 산불 발생 유무를 학습하고자 한다.
우선 산불이 발생한 날짜와 장소를 알고, 이것들을 target=산불발생유무=1로 지정하면 된다.
그러면 기상데이터는?? 이것도 역시 산불 발생 위치의 기상데이터가 필요하다. 그런데 대부분의 공개된 산불발생데이터에는 기상값이 제대로 적혀있지 않았다. 따라서 우리는 산불발생위치의 기상데이터를 직접 수집해야 했다
기상 데이터를 얻기 위해서 기상청의 asos 데이터를 사용했는데 asos는 종관기상관측이라 하여 현재 103개의 관측소가 존재하고 다양한 기상데이터를 일, 시간 별로 수집한다.
이 기상 데이터를 수집하는 방식은 우선 2가지를 구성하였는데, 하나는 api방식으로 데이터를 수집하는 것이고 하나는 기상자료개방포털에서 직접 데이터를 csv형식으로 다운로드한 후 끌어오는 방식이었다.
두 가지 방식을 만든 이유는 우선 api방식이 조금 느리긴 한데 데이터가 갱신될 때마다 기상자료개방포털에서 데이터를 다운로드하고 진행할 수 없으므로 api방식도 구현해 놓았다.
우선 1,2에서 수집한 산불데이터와 산불발생하지 않은 데이터의 날짜와 시간을 이용하여 해당 날짜의 모든 asos지점의 데이터를 수집한다.
그 이유는 우선 특정 지점의 날씨를 우리가 얻을 수가 없었다. asos는 전체 103개 밖에 없기 때문에 전 지역을 커버하지 않는다. 또한 과거데이터의 경우 현재는 정확한 좌표의 데이터를 얻을 수 없었다.
따라서 idw보간법이라는 기법을 사용하고자 했다. idw보간법에 대한 설명은 각자 찾아보시길.
( 주변 인접한 거리의 데이터로부터 가중치를 이용하여 특정 지점의 값을 구하는 공간보간법)
아무튼 이 특정시점에 대한 103개의 관측소의 기상데이터를 전부 수집하고 idw 보간법을 수행하여 해당 시점의 강원도 전체에 대한 기상 데이터를 구하고, 거기서 우리는 산불발생위치의 기상데이터만 추출하는 방식을 사용하였다.
(이 과정들이 사실 산불발생시점 해당위치의 기상데이터가 정확하게 제공되었으면 안 거쳐도 되는 과정이다. 그러나 그렇지 않기 때문에 산불발생시점 103개 지점 데이터 수집-> idw보간법으로 강원도 전체 기상 데이터 수집-> 산불 발생 위치 데이터만 추출 이런 식으로 돌아간 것이다)
위와 같이 빨간 점이 강원도에 있는 asos지점들인데, 해당 관측소들의 기상데이가 수집되고 idw보간법을 수행하면 우측과 같이 전체 지역에 대한 기상데이터를 구할 수 있게 된다.
이후 기상데이터를 전처리해 주고, 데이터를 정리하면 아래와 같이 각 산불이 발생한 날짜와 시각 위치 그리고 기상데이터를 만들 수 있게 된다.
4. 요약
1. 강원도 산불이 발생한 과거 데이터 수집
2. 강원도 산불이 발생하지 않은 과거 데이터 생성
3. 도로명 주소 형식 -> 경위도 형식
4. 각 날짜 시간에 해당하는 103개의 asos 관측소 기상데이터 수집
5. 103개의 asos 기상데이터로 idw 보간법을 수행후 산불 발생 위치의 기상데이터만 수집
6. 기상 데이터 셋 완성.
'프로젝트 > 산불 발생 예측' 카테고리의 다른 글
산불 발생 확률 예측 - 프로젝트 마무리 (0) | 2023.11.21 |
---|---|
산불 발생 확률 예측 - 모델링 결과 (0) | 2023.11.21 |
산불 발생 확률 예측 - 모델링 준비 (0) | 2023.11.21 |
산불 발생 확률 예측 - 지형,인적 데이터 수집 (0) | 2023.11.21 |
산불 발생 확률 예측 - 프로젝트 시작 (0) | 2023.11.20 |