me2day

python manage.py syncdb 하나 통과하는 게 이렇게 어려운 거였나; 12.01.15 20:39

미투 0

39 개의 댓글이 있습니다.

kz kz

1) GeoDjango라는 게 있는데 PostGIS라는 pgsql 모듈이 가장 좋다고 추천한다.

12.01.15 20:58
kz kz

2) postgresql은 써본 적이 없는데, 기능은 좋지만 약간 쓰기 불편하다는 정도로만 풍문에 전해 들었다. 일단 패키지는 설치.

12.01.15 20:59
kz kz

3) 사용자를 만들어야 된다는 거 같은데 mysql과 달리 사용자 권한 관리가 엄격한 모양이다. 사용자나 DB를 만들기 위해서는 postgresql을 돌리는 기본 사용자인 postgres를 통해 접근해야 한다. sudo와 su를 통해 프로젝트용 사용자와 DB 생성.

12.01.15 21:00
kz kz

4) python manage.sy syncdb를 통해 DB 초기화를 해봤는데 FATAL: Ident authentication failed 라면서 안 된다. settings.py에서 호스트를 localhost라고 적어주니 된다.

12.01.15 21:02
kz kz

5) GeoDjango 기본설정 문서 를 다시 보니 postgis용 DB 설정이 따로 있다. settings.py 바꾸고 syncdb. 이번에는 DB에서 postgis 버전을 파악할 수 없다며 템플릿에서 만든 게 맞냐고 묻는다. 문서에 그런 게 있긴 했는데 건너뛰었었다.

12.01.15 21:04
kz kz

6) DB를 하나 만들고 이것저것 필수적인 구조를 채워넣어둔 걸 템플릿 DB라고 하고, createdb -T로 가져다 쓸 수 있다. dropdb로 아까 만들었던 DB 날리고 새로 생성. syncdb도 성공.

12.01.15 21:26
kz kz

7) 테이블에 대응할 모델은 어떻게 만들까? ogrinspect가 있다. .shp 및 거기 딸린 다른 파일들을 던져주면 models.py에 쓸 문법을 만들어준다.

12.01.15 22:58
kz kz

8) 가지고 있던 행정구역 경계 파일이 좀 낡았나보다. 통계청 자료와 다르다고 한다. 통계청에 요청하면 무료로 주기는 하는 모양인데 뭐 공문을 첨부해야 된다고 적혀 있어서 좀 그렇다.

12.01.15 23:27
다즐링 다즐링

어렵지 않아요~

12.01.16 17:12
kz kz

9) ogrinspect에서 만들어주는 걸로 LayerMapping이라는 툴에 넘겨서 shp 파일을 테이블로 담아내는 과정이 있는데, 뭔가 인코딩 쪽이 문제가 있나보다. 따로 인코딩 옵션을 전달하는 것도 없어보이고.

12.01.16 17:16
kz kz

다즐링 이 참에 pgsql 좀 써봐야겠어요. 허덕허덕 합니다ㅜㅜ

12.01.16 17:23
kz kz

9-1) postgresql 쪽 문자열 처리와 코드가 안 맞는 부분이 있어서 그랬다 고 한다. 패치 적용된 버전이 아직 패키지로 안 들어와서 일단 pgsql 옵션을 끄고 해보니 진행이 된다.

12.01.16 22:11
kz kz

10) admin 페이지만이라도 들어가보려고 했는데 안 된다. DoesNotExist at / admin / - Site matching query does not exist. 이건 INSTALL_APPS에서 django.contrib.sites 빼서 해결.

12.01.16 22:48
kz kz

11) Unsupported SRS 어쩌고 하는 에러가 나면서 admin 페이지가 열리지 않았던 건 ogrinspect 때 —srid=4326 옵션을 빼먹었기 때문. 정확한 값은 따로 있는지 지도가 엉뚱하게 나오긴 한다. 하지만 일단 에러는 안 나니까 패스.

12.01.17 00:25
kz kz

... 각 번호별로 나중에 정확히 왜 그렇게 됐는지 혹은 안 됐는지 이유를 밝혀서 글을 적어야 되겠지? ... 왕창 길어지겠네 ㅜㅜ

12.01.17 00:25
kz kz

12) srid =4326은 WGS84라는 좌표계의 식별번호. 내가 쓴 자료는 UTM이라서 2029다. 다시 초기화하니 지도에 모양이 뜨긴 하는데 이번엔 미네소타랑 노스다코다 접경지대 쯤에 한반도가 있다; 그러고보니 TM 쪽이면 측지원점 설정이 필요하지 참...

12.01.17 22:17
kz kz

12-1) 아니었다. 2097 로 정해주고 다시 초기화하니까 한반도 제 위치에 다각형이 그려진다. / 이렇게 해서 기초자료 준비 단계가 된 건가 (헉헉)

12.01.17 23:09
kz kz

13) 있는 정보를 어떻게 걸러서 원하는 값만 추려낼지의 단계인데, 시험삼아 '값의 길이'로 하려고 했더니 그런 조건문을 줄 수가 없게 되어 있다. 그나마 __regex 필터로 할 수 있기는 한데 이건 좀 소 잡는 칼이고...

12.01.18 21:57
kz kz

13-1) 지형 정보에 대해서는 bboverlaps 를 쓰면 주변 지역을 다 조회한다는 목적에 맞겠다. 그러자면 우선 중심에 들어갈 지역을 선택하는 과정이 있어야 되겠는데...

12.01.18 23:35
kz kz

13-2) 지역을 선택하려면 URL에 적을 수 있을만큼 짧아야 해서 한글은 곤란. 그렇다고 구글 지도 차트 에서 쓰는 ISO 3166-2 한국 구분기호를 쓰자니 직관적이지도 않고, 도 단위 이하의 상세 행정구역은 어떻게 할지도 문제고...

12.01.18 23:43
kz kz

13-3) 북한 코드는 뭐 이리 빈약해… 평양이랑 나진선봉지구 말고는 도 단위 뿐이네?;

12.01.18 23:50
kz kz

14) 정밀한 경계선을 단순하게 정리해야 차트라는 느낌도 살고, 이미지로 출력할 때 렌더링 부하도 줄어들기 때문에, simplify 메소드가 있는 걸 확인했다. Douglas-Peucker 알고리즘을 쓴다는데, 괜찮아 보인다. 좌표계 단위에 적당한 임계치를 주면 된다.

12.01.19 03:09
kz kz

14-2) 접경한 것들을 따로따로 처리했을 때 원래 근접했던 선이 서로 조금씩 다르게 바뀌어서 틈이 벌어질 수 있을 것 같은데 아예 이미지 상에서 경계선 자체를 흐리게 퍼뜨리면 안 드러나지 않을까?

12.01.19 03:17
kz kz

9-2) 인코딩은 LayerMapping() 동작할 때 옵션이 들어간다.

12.01.19 03:25
kz kz

15) mapnik을 통해서 지도 이미지를 만들 수 있게 djmapnik 모듈이 있는 걸 확인했다. 샘플로 나온 건 좀 덜 깔끔하다 싶은데 좀 더 알아봐야 되겠다.

12.01.20 00:22
kz kz

15-1) GeoQuerySet으로 지역을 잡아서 이미지로 그려내는 걸 확인했다. 다만 bboverlaps를 쓰면 to_mapnik 이라는 부분에서 깨진다. 조건문이 너무 최신이라 소화를 못하는 게 아닐까 싶은데, 그 부분은 썩 단순해서 더 안쪽을 봐야 되나보다.

12.01.20 01:27
kz kz

15-2) 에러를 보니 서브쿼리문 자체가 잘못 만들어지는 모양이다. geom 비교를 하는 부분에 escape가 잔뜩 들어가면서 그거 자체가 잘못 인식이 되든지 아니면 길이가 넘치는 것이든지... 이건 어디를 봐야 되는 거지...

12.01.21 00:01
kz kz

15-3) geo_quote_name이나 quote_name이라는 함수를 통해 쿼리문에 쓸 덩어리를 정리하는데, 밖에서 따옴표로 감싸면서 안쪽에 있는 따옴표를 그냥 둬서 깨지는 거였다. 쿼리에 geom을 걸어본 사람이 없진 않을 테고; 내가 뭘 잘못하고 있나...

12.01.21 13:42
kz kz

15-4) 여러 DB마다 escape에 대한 요구가 달라서, 단순히 문자열을 어떻게 바꾼다 수준으로는 안될 것 같다. 기존 DB 처리 루틴에 이런 게 있어야 할 텐데 mysql 파이썬 쪽에는 connection이 literal이란 걸 가지고 있다고 한다. pgsql은?

12.01.21 13:50
kz 모모

15-5) 내부적인 escape까지는 신경 쓸 필요 없는 문제고, 따옴표로 감싸는 처리를 할지 말지 판단 하면 되는 문제인 걸로 확인해서 패치 제출했다.

12.01.25 16:18
kz 모모

15-6) mapnik을 본격적으로 활용할 차례인데, 우선 mapnik이 진짜 유일한 혹은 최선의 방법인가에 대해서는, OpenLayers를 통해서 이미 준비된 지도 위에 간단한 정보만 표시하는 게 어떠냐는 답변이 많이 보이는데, 지도 이미지 자체 표시랑은 다르지.

12.01.25 17:08
kz 모모

16) mapnik 예제가 레이어를 추가하는 식으로 되어 있어서, 주변지역 레이어를 회색으로 그리고 중심지역 레이어를 파란색으로 추가해서 그 위에 나오도록 했다. 스타일 지정, 레이어 추가 등의 기본 개념은 된 셈.

12.01.25 18:14
kz 모모

14-3) 잘못 생각했다. djmapnik에 넘기기 위해선 그 자체가 QuerySet이어야 하는데, simplify는 이미 QuerySet에서 각 item을 뽑아온 이후에 처리할 수 있는 부분이다. 그렇다면 djmapnik 안에서 simplify를 호출해야 되나?

12.01.25 18:47
kz 모모

행정구역별 차트 의 활용으로 선거구 에 투표율이나 득표수 같은 걸 표시하는 것도 좋겠다. 선거구는 공직선거법 별표로 들어가 있는데 시군구 내지 행정동을 묶어서 선거구를 정하고 있다. 행정동 지도를 구하고 그걸 묶어주는 선거구 단위를 만들면 차트 처리하는 건 어렵지 않겠다.

12.01.27 22:02
kz 모모

15-5-1) 패치 제출에 대해 반응은 있었는데 bitbucket에 있는 걸 곧 github로 옮길 거고, 그때 같이 검토해보겠다고 한다.

12.01.27 22:07
kz 모모

8-1) 여러 shp를 원본으로 사용해도 전체 동작에 문제가 없도록 할 필요가 있겠다. 고려할 점은 a) 필드의 갯수나 특정 의미를 가지는 필드명이 다를 수 있다. b) 기준 srid가 다를 수 있다. c) 도/시/동 등으로 정밀도가 다를 수 있다.

12.01.27 22:11
kz 모모

14-4) GeoQuerySet를 상속하고 simplify 메소드를 재설정하는 ChartQuerySet을 만들어서 붙였다. qs에 simplify를 호출했을 때의 동작은 모르겠다. _geom_attribute는 simplify가 property가 아니라서 안 맞다.

12.01.29 04:04
kz 모모

14-5) 뭔가 내부적으로 속성으로 쓸 수 있게 등록되어야 하는 모양이다. simplify는 정확히는 GEOSGeometry의 메소드고, qs에는 force_rhr이나 reverse_geom 같이 지도정보를 건드리는 게 있기는 한데 뭐가 다른 거지...

12.01.30 14:44