기타/튜토리얼 따라하기

Automating GIS Process 2023 시작

코드아키택트 2023. 12. 26. 17:39
반응형

안녕하세요 집DS입니다.

다른 이름으로 알고계시던 분들에게는 살짝 당황스러운 이름이라고 생각합니다. 지금까지 해오던 건축과 프로그래밍을 넘어서, 지도, 데이터사이언스를 접목해 나가는 과정을 차근차근해나가려 합니다. 다른 이야기를 기대하셨던 분들의 너그러운 양해를 부탁드립니다. 그럼 GIS 기초를 위해 듣는 프로그램을 소개하려 합니다.

Automating GIS Process 란?

대학원 시절은 태풍과 같았습니다. GIS 대학원임에도 이러저러한 이슈로 인해 GIS를 제대로 해내지는 못했습니다. 그때 알아봤던 튜토리얼 중 하나는 "Automating GIS Process"가 있었습니다. GPT의 도움을 받아 정리해 보면 아래와 같은 내용을 다루고 있습니다.


'Automating GIS Processes 2023’은(는) 파이썬 프로그래밍 언어를 사용하여 지리 데이터 분석을 소개하는 온라인 강의입니다. 이 강의는 상호작용적인 수업과 실습을 통해 학생들이 공간 데이터를 효율적으로 관리, 분석 및 시각화하는 방법을 배울 수 있습니다. 이 강의는 핀란드 헬싱키 대학교 지구과학 및 지리학부에서 개발되었으며, Geo-Python과 함께 공개적으로 제공됩니다. 이 강의를 마치면 학생들은 Python을 사용하여 공간 데이터를 효율적이고 체계적으로 관리, 분석 및 시각화할 수 있으며, 사용 가능한 방법을 비판적으로 평가할 수 있습니다. 또한, 학생들은 좋은 프로그래밍 관행, 버전 관리 시스템(git)의 이점 및 온라인 저장소(GitHub)에서 분석 워크플로우를 문서화하고 전달하는 방법을 알게 됩니다. 이 강의는 모든 사람들에게 공개되어 있으며, 누구나 이 웹사이트를 공유하고 자신의 교육에서 제공된 자료를 사용할 수 있습니다1

이 강의는 ‘Geo-Python’ 강의를 먼저 수강하는 것을 권장합니다1 이 강의는 지리 정보를 다루는데 필요한 기본적인 Python 프로그래밍 기술을 배울 수 있는 강의입니다1

이 강의는 대부분의 시간을 컴퓨터 앞에서 Python 언어를 배우는 데 사용합니다. 이 강의는 상호작용적인 강의와 매주 과제로 구성되어 있습니다. 과제는 Python 프로그래밍 기술을 개발하고 이러한 기술을 사용하여 지리 정보를 조작하고 분석하는 데 중점을 둡니다. 이 강의의 대부분의 과제는 실제 세계의 예제와 데이터를 사용합니다. 각 과제마다 학생들은 작성한 Python 코드, 출력 그림 및 관련 질문에 대한 답변을 제출하도록 요청됩니다. 학생들은 주간 과제를 수행하는 동안 다른 학생들과 함께 논의하고 협력할 것을 권장합니다. 최종 과제는 개인적으로 완료해야 하며, 학생의 작업을 명확하게 반영해야 합니다1

이 강의는 핀란드 헬싱키 대학교 지리학 석사 프로그램의 일부이며, GEOG-329-2로 등록할 수 있습니다. 이 강의를 수강하기 전에 ‘Introduction to advanced geoinformatics’ 강의를 수강하는 것을 권장합니다1


한마디로 GIS(Geographic Information System)과 관련된 분석을 Python으로 하고 싶은 사람에게 적합한 강의라고 볼 수 있습니다. Geo-Python을 선수강해야 하지만 패기롭게 안 해보도록 하겠습니다.

 

왜 Python을 써야 하는가?

파이썬을 왜 써야 하는지 본인의 믿음이 있어야 이런 강의를 들을 수 있습니다. 그럼 저 나름의 이유를 써보겠습니다.

1. 배우기 매우 쉬운 언어

저는 컴퓨터공학을 전공하지는 않았습니다. 그러나 부트캠프와 대학원에서 "데이터 사이언스를 위한 컴퓨팅" 등의 수업을 들으며 왜 Python이 배우기 쉬운지 정도는 설명할 수 있습니다. Java와 같은 언어들은 Compile언어로서 매 Compile마다 각 데이터의 타입을 신경 써줘야 합니다. 프로그래밍을 입문하는 사람 입장에서는 꽤나 어려운 일입니다. 저 역시도 이런 데이터 타입과 관련해 어려움을 겪는 때가 굉장히 많습니다. 나중에 고수가 되면 이런 이슈들을 분명하게 잘 알아야 하지만, 입문자에겐 어려운 일입니다. 

좀 더 어려운 말로 써보자면 Java와 같은 언어들은 Static Type Checking 언어입니다. 그래서 각 기능 또는 class에 들어가는 데이터를 compile시 하나하나 체크해 줍니다. 그런 속성으로 인해 프로그램이 어떻게 돌아갈지 예상 가능하다는 장점이 있습니다. 단점은 지정한 타입 이외에 다른 데이터를 넣을 수 없기 때문에 상당히 불편한 점이 많습니다. 어떤 경우에는 '숫자'와 '문자열'을 동시에 내보내고 싶을 수도 있습니다. 이런 경우 Java에서는 둘을 포함할 수 있는 객체를 만든 후 한쪽을 비우는 방식 등을 통해 내보내야 합니다.

Type을 선언하는지 유무를 볼 수 있습니다(출처 : https://levelup.gitconnected.com/understanding-javascript-coercion-in-a-dynamically-typed-language-8807d6331fa2)

반면 Python과 같은 Dynamic Type Checking언어의 경우 위와 같은 어려움이 없습니다. return 타입을 '숫자'로 하나 '문자열'로 하나 프로그램은 신경 쓰지 않습니다. 그래서 입문하는 사람들에게는 굉장히 좋은 언어라고 생각합니다. 반면 이런 점 때문에 좀 더 큰 서비스를 만들기 어렵다는 점도 있습니다. 이런 단점을 극복하기 위해 Pyright와 mypy와 같은 프레임워크(?) 등도 존재합니다. Interface를 상속받는 방식도 가능하고요. 저도 직접 Pyright, mypy, interface 등을 써봤는데 할수록 Python스럽지 못하다는 인상을 받기도 했습니다.

2. 무료 GIS 및 자동화

그래도 논문을 깔짝 여본 이야기로는 이렇습니다. GIS업계의 사실상 표준(De facto)은 ArcGIS입니다. GIS 분석을 하다 보면 만나게 되는 shp 파일을 만든 것도 ArcGIS의 회사 ESRI입니다. 저도 관심이 있어 ArcGIS를 써본 적이 있지만 굉장히 불편했습니다. 여러 가지 기능이 있는 것은 분명하지만 아무래도 오래된 프로그램이다 보니 유저 편의성은 상당히 떨어지는 편이었습니다.

반면 QGIS라는 오픈소스 프로그램도 존재합니다. 저는 학부시절 QGIS를 배웠기 때문에 이 프로그램이 더 손에 익습니다. 그리고 비주얼 프로그래밍 도구도 지원해 주는 것으로 알고 있습니다. 하지만 어느 날부터 마우스로 무언갈 하길 싫어졌습니다. 저의 머릿속엔 다음과 같은 공식이 있기 때문입니다.

마우스로 무언갈 한다 == 비효율적이다

저는 Rhino + Grasshopper를 하며 손으로 모델링하는 것을 정말 싫어하게 되었습니다. 분명 필요한 것은 알지만 시간소모가 엄청나기 때문입니다. QGIS의 Python 등이 제공되기도 하는데, QGIS종속적으로 하기보다는 좀 더 프로그래밍 적으로 해보고 싶었습니다.

그런 면에서 Python을 가지고 GIS분석을 하는 쪽이 저에게 더 와닿았습니다.

3. AI / Machine Learning

지금 시대에 무시할 수 없는 주제입니다. 혹자는 이제 더 이상 AI를 학습시키는 게 불필요하다고 말하기도 합니다. 어느 정도는 맞고 어느정도는 틀린 말이라고 생각합니다. AI라는 분야 자체는 엄청나게 발전했지만 이를 가져다 쓰게 된 타 산업분야의 발전은 더딥니다.

출처(https://towardsdatascience.com/do-you-also-feel-ai-is-going-too-fast-56bf56ab43b3)

저는 대학원 시절 AI와 GIS를 접목하는 내용들을 찾아보고 구현해보려 했지만 정말 힘든 작업이었습니다. 2022년 기준으로 거의 대부분 논문은 GIS 분석을 자동화해주지는 못했습니다. 제가 기억나는 논문들은 GIS와 관련된 질문을 요약해 주는 LLM이나, "어디에 무엇이 있는지 알려줘"를 SQL문으로 바꾸는 방법, PoI를 Graph로 바꾸는 방법(Knowledge Graph라고는 하지 않겠습니다) 등이 존재했습니다.

그럼 이제 해볼까

위 설명이면 Python으로 GIS분석을 해야 하는 이유는 충분할 것으로 보입니다.

그럼 집 DS의 도전기 시작해 보겠습니다.

반응형