파이썬으로 숫자 뿐만아니라 qgis로만 다루던 폴리곤 데이터들도 처리할 수 있다는 사실을 알게되어서 한번 연습삼아 만들어보았습니다. 

우선 인도와 비슷하게 의원 총원은 600명으로, 각 성 인구를 약 230만명으로 나눈 값을 반올림하여 할당하였습니다. 

원래는 한국 현행 선거구 획정과 비슷하게 선거구 인구편차는 2대 1로 하고 싶었으나 수작업으로 해야하는게 너무 많아져서 3대 1로..

그래서 각 선거구 당 인구는 최저 133만명, 최대 399만명입니다..

중국의 행정구역을 아주아주 간략하게 정리하자면 '성' > '시' > '구' 로 볼 수 있습니다. 

'시'의 경우 서부를 제외하면 대부분 백만~천만 사이의 인구를 보유하고 있으므로 그 아래의 '구'를 합하여 선거구를 구성하는 것이 목표입니다.


1.1. 133만명 ~ 399만명의 인구를 보유한 '시'의 경우, 그 자체로 독립적인 선거구를 구성한다.

1.2. 단, 각 성에 할당된 선거구를 초과할 경우, 독립적인 선거구로 구성된 '시'들 중 인구가 적으며 인접한 둘을 우선적으로 합친다. 

2.1. 399만명 이상의 인구를 보유한 '시'의 경우, 그 아래의 '구'들을 합쳐 2개 이상의 선거구를 구성한다. 

2.2. 2개 이상의 '구' 폴리곤을 합칠 경우, 반드시 인접해야한다. 즉, 월경지를 만드는 것은 용납하지 않는다.

2.3. '구' 폴리곤을 합칠 때, 가장 많이 인접하고 있는 '구'부터 합치지만, 만약 399만명을 넘길 경우 그 다음으로 많이 인접하는 '구'로 반복한다. 

2.3. 단일 '구'의 인구가 399만명 이상일 경우, 해당 '구'는 어떤 처리도 하지 않는다. (qgis에서 수작업으로 나눠주어야하는 것들..)

3.1. 133만명 이하의 인구를 보유한 '시'의 경우, 전부 하나로 합쳐준 후, 위에서 생성된 다른 선거구들 중 하나와 합친다.

3.2. 마찬가지로, 가장 많이 인접하고 있는 선거구부터 합치지만, 만약 인구가 399만명을 넘길 경우 그 다음으로 많이 인접하는 선거구로 반복한다. 

4.1. 위의 작업 중, 어떤 '구' / '시'부터 합칠 것인가는 랜덤으로 한다. 

4.2. 위의 작업을 각 성별로 100번 정도 반복하여 가장 완성에 가까운 안을 선정 후, 다음 '성' 작업을 시작한다. 

4.3. 위의 작업에도 불구하고 선거구를 이루지 못한 경우(예: 399만명 이상의 인구를 가진 '구', 예외로 1석 부여한 마카오 등)는 qgis에서 수작업..


다만 하나하나 검증을 거친것은 아니여서, U자형 선거구처럼 형태가 조금 맘에 들지않는 선거구도 있긴합니다 ㅋㅋ

단순히 많이 인접하는 폴리곤부터 합치는 대신 인문학적으로, 가령 생활권을 기준으로 제작해보고 싶긴하지만 파이썬이 할 수 없는 영역인지라..



생각해보니 에전에 만들어둔 1920/1940년 일본제국 인구 데이터나 1930년대 동남아시아 인구 데이터도 비슷하게 활용해 볼 수 있겠네요.

<아래에는 해당 데이터들을 활용해서 만든 시정촌/부읍면/시가장 단위 인구밀도 지도>

https://arca.live/b/city/76899870

https://arca.live/b/city/47654854


방대한 숫자+폴리곤 데이터를 한번에 처리해보니 좀 재미있네요. 그동안 왜 파이썬을 쓸 생각을 못했는지..

사실 가상 지도에 큰 흥미는 없어서, 혹시 조금 더 현실적인 활용방안이 있을까요?