주소로 위경도 읽어오기 (지오코딩, geocoading)

우리가 데이터를 받을 때 위경도가 딸려오지 않는 경우가 많이 있습니다. 주소 만이라도 온전히 확보된 것이라도 감사해야 할 경우 인데요. 이 주소 목록만을 가지고 위경도를 가져오는 지오코딩 방법을 공유하겠습니다.

지오코딩에는 많은 방법이 알려져 있습니다만 여기에서는 제가 가장 가벼운 마음으로 즐겨쓰는 구글 AWESOME TABLE를 이용해보겠습니다. 일반 지메일 기능이나 구글 지스윗(업무용 지메일) 의 드라이브 기능으로 있는 스프레드시트의 애드온 기능입니다.

주소 데이터의 확보

먼저 드라이브로 이동하여 새 문서-구글 시트 – 빈시트만들기를 선택하여 문서를 하나 만듭니다.

헤더명은 “주소”로 하겠습니다. 주소가 아닌 다른 칼럼 이름도 관계 없습니다. 칼럼에는 변환할 주소를 준비해줍니다. 필요하면 구글링등을 통해 “주소록” 검색하시면 전국 유치원 주소록이라던가 쓸만한 주소록을 구할 수 있습니다.

변환할 주소정보가 따로 준비되어 있지 않고 샘플로도 충분하신 분은 아래 링크에 들어가셔서 파일-사본만들기를 눌러 사본을 준비하시기 바랍니다. 문서가 카피되어 본인 소유 의 문서로 생성됩니다.

https://docs.google.com/spreadsheets/d/14XKOoJexKJd2sTi42QMA2PjELOtOpXSHil08YkV4i4w/edit#gid=0

이 데이터는 제가 아는 어떤 조직의 주소록인데 동호수를 전부 삭제한 것입니다. 주소를 살펴보면서 새삼스럽게 느낀 것은 공동주택이 압도적으로 많다는 점입니다. 거의 대부분의주소가 아파트 아니면 빌라네요. 개인 주택으로 보이는 주소는 한손으로 꼽을 정도입니다.

구글 스프레드시트와 AWESOME TABLE

이제 데이터가 준비되었으니 사용할 연장을 확인해야 하겠습니다. 위 메뉴에서 부가기능을 눌러보세요. AWESOME TABLE이 보이면 넘어가시고, 안보이면 설치되어 있지 않다는 이야기이니 [부가기능 설치하기]만 보이면 그것을 눌러줍니다.

GEOCODE BY AWESOME TABLE 이미지 검색결과

AWESOME TABLE로 검색을 해보면 아래와 같은 목록이 보이는데 첫 앱을 선택해줍니다.

[설치]를 눌러서 구글 시트에서 사용할 수 있도록 설치합니다. 앱에 기능이 추가되는 것이니 별도의 설치 동작 등은 없고 권한 확인 및 인증 등을 확인하게 됩니다.

이제 [부가기능]으로 가서 [Geocode by Awesome Table]-[Start Geocoading]을 선택합니다. 아마 그 아래의 [Geocode on form submit]는 구글 폼 등을 통해서 자료를 자동수집할 경우 자동으로 데이터가 들어올 때 마다 주소를 위경도로 변환해주는 기능인 듯 합니다. 이 기능에 대해서는 별도 포스팅해보겠습니다.

주소의 변환 (Geo Coading)

[Start Geocoading]을 누르게 되면 아래와 같이 우측창이 나타나게 됩니다. 시트명은 그대로 사용하시면 되고, Address column을 지정해주면 됩니다. “주소” 혹은 다른 칼럼 명을 지정하면 됩니다. 그리고는 [Geocode!]를 눌러주면 됩니다.

Langitude, Longitude 칼럼이 자동으로 생기고 자동으로 주소 변환을 해줍니다. 50개 변환하는데 1분도 채 안걸린 듯 합니다. 저는 개인적으로는 자료가 많은 경우 몇천개씩 잘라서 별도의 시트에 붙여서 동시에 변환한 경우도 있습니다. 이렇게도 잘 동작됩니다.

오류의 보정

이 기능이 예전에는 오류율이 많았었는데 최근에는 편안하게 다른 분들에게 추천드릴 정도로 오류율이 상당히 개선되었습니다. 어찌되었건 오류가 나는 경우가 없지는 않은데요. 주소변환 오류가 발생한 경우 다시 한번 주소를 확인한 다음 구글맵으로 갑니다. http://map.google.com

google map 이미지 검색결과

검색창에 주소를 붙여넣기하고 검색을 눌러주면 위치가 나타나게 됩니다. 이 때 주소창을 보시면 @다음에 숫자가 이어진 부분이 있는데 이것이 바로 위경도 입니다. 맨 앞이 위도, 슬래시 다음이 경도, 그 다음이 zoom level (확대 수준) 입니다. z17이면 17단계까지 확대한 상태라는 겁니다.

하나 하나 이 숫자를 복제하는 것도 방법이지만 이 숫자를 더블클릭하시면 위경도와17z 까지 전부 선택됩니다. 이것을 복사합니다.

이것을 구글시트 해당 주소줄 맨 오른쪽에 붙여줍니다. 이와 같은 동작을 다른 오류난 주소들에도 반복해줍니다. 주소의 수동 검색이 끝났으며 이제 이것을 위경도 칼럼에 넣어주어야 하는데 먼저 쉼표로 이어진 텍스트를 각각 분리해야 합니다.

구글시트에는 [데이터]-[텍스트를 열로변환] 기능이 있습니다. 먼저 칼럼을 선택하고 이 기능을 실행하면 아래 그림과 같이 위도, 경도, z level 세 칼럼으로 나눠줍니다. 이렇게 나눠진 앞의 두 칼럼을 복사해서 왼쪽의 위경도 창에 붙여넣으면 됩니다.

이렇게 변환된 주소들은 맵에도 바로 표시할 수 있습니다. [Open map]을 선택하면 아래와 같은 지도가 나옵니다.

마무리

저는 태블로에서 변환된 위경도 주소를 활용할 계획이므로 이쯤에서 마무리하겠습니다. 참고로 이 기능은 일일 사용제한량이 있어서 수만~수십만개의 데이터를 변환하는데는 적절하지 않아보입니다. 대량 주소 변환에 대해서는 좋은 프로그램들이 좀 있다는데요 다음 기회에 추가 포스팅을 할 기회가 있을 듯 합니다.

 1,771 total views

주소만으로 시도/시군구 칼럼 만들기

데이터로서 주소만 확보된 경우 여러가지 추가 가공을 하면 그 데이터를 여러 용도로 활용가능합니다. 주소로 위경도를 가져오는 방법은 아래의 링크를 참고하시기 바랍니다.

http://dgtnmd.net/2020/02/28/%ec%a3%bc%ec%86%8c%eb%a1%9c-%ec%9c%84%ea%b2%bd%eb%8f%84-%ec%9d%bd%ec%96%b4%ec%98%a4%ea%b8%b0/

그 다음으로 많이 필요한 기능이 시도와 시군구를 구분하는 일입니다. 아시다시피 태블로에서는 국가, 시도, 시군구 데이터에 대해서는 geographical role을 부여하여 지도를 그리거나 필터를 걸 때 매우 유용하게 사용됩니다.

사용자 정의 split를 사용하여 3칼럼을 분리합니다. 제대로 정제된 데이터를 사용하셨다면 첫번째 칼럼은 무조건 시/도입니다. 이것은 큰 이슈가 없습니다. 첫 칼럼의 명칭을 시도로 하신 다음 geographical role을 시/도로 부여합니다.

문제는 두번째, 세번째 칼럼입니다. 서울시 강남구를 보면 두번째가 구로 끝나서 “시/군/구”에 해당하는 것이 맞는데 경기도 성남시 분당구를 보면 두번째 칼럼은 시로 끝나고 세번째 칼럼은 구로 끝나고 있지요.

실은 두번째 칼럼은 기초광역자치단체에 해당 합니다. 서울의 강남구 의회가 있드시 경기도는 성남시 의회가 있습니다. 성남시에는 분당구, 수정구, 복정구의 세가지 일반구가 있습니다.

기초지자체를 시군구로 정의하려 사용하시려면 split한 두번째 칼럼을 그대로 사용하시면 되고요, 우리가 실생활에서 사용하는 일반구를 사용하려면 아래의 계산식이 필요합니다. 기계적인 판단이 아닌 하고자 하는 일의 용도에 따른 선택을 하셔야 합니다.

이때 시군구를 성남시 분당구의 일반구로 구별을 하고자 하면 시군구는 “성남시 분당구”가 될 것입니다. 다행히도 태블로는 “성남시 분당구”를 알아듣습니다.

위와 같이 구현하려면 세번째 split칼럼을 살펴봐야 하는데 오랜 경험의 결과 지자체급 시군구와 일반시군구의 구분은 세번째 칼럼의 마지막 글자가 “구”로 끝나는 경우가 100%였습니다. 따라서 칼럼2와 칼럼3를 엮어서 아래와 같은 계산식을 정의하면 유용하게 사용 가능합니다.

IF RIGHT([주소3], 1) = "구"  THEN 
     [주소2] + " " + [주소3]
 ELSE
     [주소2]
 END

이렇게 정의된 칼럼은 “시군구”로 이름을 변경하시면 되고 geograhpical role 또한 “시군구” 혹은 “county”로 정의를 하시면 되겠습니다.

실습을 위한 샘플 링크는 아래의 구글 스프레드시트를 참고하세요. 인터넷에서 구한 주소록에 동호수를 전부 없앤 데이터입니다. 이 주소들을 보니 정말 아파트나 빌라 등 공동주택에 살고 계시는 분이 많긴 많네요.

권한요청주시는 분이 가끔있어서 사용방법을 말씀드리면, 지메일 계정으로 로긴하여 사본만들기해서 사용하시면 됩니다. 제가 수정권한까지는 드릴 수 없어서요.

https://docs.google.com/spreadsheets/d/14XKOoJexKJd2sTi42QMA2PjELOtOpXSHil08YkV4i4w/edit#gid=0

이것을 태블로에서 불러들입니다.

사용자 지정 분할을 해야 하는데 구분기호는 스페이스로 분할 해제는 첫번째 3열을 선택하세요.


주소-분할 1~3의 칼럼이 보이는데 주소1은 시도로 변경해주시고, 나머지는 주소2, 주소3으로 이름을 바꿔줍니다. 여러번 쓸 이름은 아니지만 계산식 입력시 혼동이 되므로 변경을 권합니다.

시도는 시/도로 (영문인 경우 states)로 지리적 역할을 부여합니다.



계산식을 하나 만들어 시군구로 명명하고 아래의 계산식을 넣어줍니다.

IF RIGHT([주소3], 1) = "구"  THEN 
     [주소2] + " " + [주소3]
 ELSE
     [주소2]
 END

주소2, 주소3은 이제 필요 없으니 숨겨주면 됩니다. 깔끔하게 시도, 시군구 칼럼이 준비된 것을 볼 수 있습니다.

혹시라도 아래와 같은 “알 수 없음” 표시가 나타나면 내용을 살펴보면 되는데요

행정 폐지된 부천시 소사구 및 원미구

아시는 분도 있을텐데 부천시의 소사구 원미구는 행정구역이 없어졌기 때문에 단순히 부천시로 변경하여 지정하면 됩니다. 부천시 혹은 부 만 타이핑시 추천 지명이 뜨면 편리할텐데요 태블로에서는 글자를 치고 아래 화살표를 누르면 아래와 같이 추천 지명이뜹니다.

부천시로 수정하여 지정하여 마무리합니다.

우측의 시도명을 보면 서울시, 서울특별시, 인천, 인천광역시,인천시 등 여러 이름으로 나타나는데요. 이것들은 geographical group으로 묶어서 사용 가능합니다.

 953 total views

비틀즈를 분석해보자 (태블로 퍼블릭)

저의 최애 VIZ입니다. 비틀즈의 각 맴버들과 곡들을 잘 분석한 대단한 수준의 인포래픽 시각화물입니다. 각 맴버들은 아이콘으로서 표시했고 라인들 또한 전부 실제 데이터에 기반한 도형들입니다.

 433 total views

태블로에 맞는 티베로(Tibero) 드라이버

결론부터 먼저 말씀을 드립니다. 티베로 드라이버를 찾는 태블로 사용자 여러분. 반드시 티베로 홈페이지에서 다운받으시기 바랍니다.

티벡스 드라이버는 티멕스 홈페이지에서

웹상에서 구글링되는, 네이버에서 검색되는 드라이버들은 대부분 불안정한 하위 버젼입니다. 시간낭비 마시고, 업체 욕하지 마시고 꼭 데이터베이스 제조사인 티베로 홈페이지에 들어가셔서 다운로드 받으시기 바랍니다. 저 또한 몇시간의 고생끝에 얻어낸 결론입니다.

저희가 수 년전 경마 관련 공공기관의 프로젝트를 진행할 때의 경험인데 이 때 티베로 디비에 연결은 되어 디비나 테이블 목록은 보이는데 막상 데이터는 불러와지지 않아서 티멕스의 본사의 엔지니어의 도움을 받아 같이 고생하면서 드라이버를 안정화시킨 적이 있습니다. 적어도 그 이후 버젼이어야 잘 동작을 할텐데요 제대로 동작하는 그 버젼이 바로 홈페이지에 있는 버전으로 보입니다.

회원가입 및 로긴은 불편하시더라도 하시기 바랍니다. 저도 회원가입 귀찮은 마음에 여기 저기 개인 블로그 등에서 다운로드 받아서 깔고 테스트하고 실패하느라 시간 많이 날렸기 때문에 이 글을 씁니다. 꼭 공식 홈페이지에서 최신 드라이버를 다운받으시기 바랍니다.

티멕스에게 바라는 점

티멕스에도 얘기드리고 싶은데요. 꼭 (회원가입을 하고) 로긴을 해야만 드라이버를 다운받을 수 있도록 한것은 제품을 다운받는 사람을 파악하기 위해서인지는 모르겠지만 사용자 입장에서는 무척 불편합니다. 최근 다른 드라이버를 다운받았던 기억을 되살려보면 그런 사이트들에서 로긴을 한 경험이 거의 기억나지 않습니다. 제품의 제대로 된 사용을 위해 다들 오픈하는 것 아닌가 하는 생각입니다. 티베로도 불완전한 제품이라는 불필요한 오해를 받는 것을 방지하기 위해서라도 공개로 전환하시는 것은 어떠실지요?

다운로드 링크

https://technet.tmaxsoft.com/en/front/main/main.do 에서 다운로드를 선택하세요.

즐태블로하세요. 디노였습니다.

 868 total views

TABLEAU GIS기능을 이용한 지리정보 활용

서울시 각구와 동을 표시한 태블로 지도. 구는 특성 색을 가지고 동은 해당 색 중에서 명암을 가지게 됨

디노입니다. 태블로 GIS관련 내용들은 아래와 같은 내용으로 글쓰기를 진행하려고 생각하고 있습니다. 저 혼자 미루고 포기하는 게으름을 멀리하기 위해 목차를 먼저 공개합니다. 내용 적인 측면에서도 큰틀을 잡고 진행하면서 많이 다듬고 많이 수정할 것입니다.

전체적인 틀은 기존에 공유했던 세미나 자료의 내용을 근간으로 할 것입니다. 이 내용 또한 태블로의 GIS관련 매뉴얼이나 각종 구글링을 통해서 실질적으로 필드에서 필요한 것들을 정리한 것입니다.

http://dgtnmd.net/2020/02/25/bisic-gis-info-visualization/

혹시라도 업무에서 먼저 필요하다거나 추가가 필요한 내용 알려주시면 순서를 조정해보겠습니다. 유용한 내용들이 될 수 있도록 많은 격려와 질책 부탁드립니다.

 646 total views

기초부터 알아보는 지리적 정보 시각화 총정리

Using GIS data with Tableau

요즘 데이터 중에 지리정보들 무척 많아지고 있지요? 안타까운 코로나 19의 확진자 동선 등이 그 대표적인 내용이 아닐까 합니다. 예전에는 처리 자체가 어려워 모으지 않던 데이터들을 요즘은 많이 활용하고 있습니다.

위경도 요소들을 선반위에 올리면서 지도가 뜨면서 대전 아래쯤에 점이 하나 딱 드던 그 첫 경험을 잊지 못합니다. 신기하고 재미있던 느낌이었는데요, 하나 하나 기능들을 소화하고 실무에 적용하면서 내용이 계속 추가하면서 자료가 상당히 방대해졌습니다. 이 자료는 여러가지 기본적인 내용들로부터 실무적으로 필요한 응용 내용들, 엔터프라이급에서 필요한 내용까지 총 망라하고 있습니다. 태블로 컨퍼런스나 웨비나 등을 통해 몇차례 소개한적도 있습니다.

개별적인 세부 내용들에 대해서는 시리즈물로 풀어서 공유하려고 준비 중에 있고요, 만약 부족해 보인다거나 추가적으로 필요한 내용은 댓글 혹은 메일로 알려주시면 검토하여 준비하겠습니다.

새창에서 보려면 아래의 링크를 누르시기 바랍니다.
http://map.tw19.dviz.kr

 482 total views

태블로 발표용 소개 자료

태블로 소개하러 방문할 때 보여드리는 프리젠테이션입니다. 말과 함께 설명을 드리다보니 여러가지 함축적인 페이지들이 많습니다. 간단하게 내용만 훓어보시기 바라고요 기회가 되면 별도로 풀어서 설명드리겠습니다.

새창에서 보려면 아래의 링크를 눌러주시기 바랍니다.
http://introduction.dviz.kr

 597 total views

gsuite 이메일 서버 보안 강화하기

안녕하세요. 디노입니다.

저희 회사는 구글 지스윗을 사용하고 있어서 설정할 때 크게 설정할 일이 없습니다만, 최근 여러 문의를 통해서 이메일 보안을 강화하기 위해 추가 설정할 내용이 있는 것을 파악하고 이 내용을 공유합니다.

아래의 세 개의 설정을 추가해줘야 한다는데 설명은 다음과 같고 설정 방법을 설명드립니다.

SPF (Sender Policy Framework) 는 도메인의 이메일을 보낼 수 있는 서버를 지정합니다.
DKIM(DomainKeys Identified Mail) 은 메일 콘텐츠가 위조되지 않았고 변경되지 않았는지 확인합니다.
DMARC(Domain-based Message Authentication, Reporting & Conformance) 는 도메인에서 의심스러운 수신 이메일을 처리하는 방법을 지정합니다.


1. SPF레코드

SPF레코드 관리는 다음 문서를 참조하세요. https://support.google.com/a/answer/33786?hl=ko

저희 고객사에서는 이 설정이 되어 있지 않아서 몇개의 기관에서 메일이 리턴되어 오는 경우가 있었습니다.

DNS서버의 TXT설정을 점검하여 레코드가 기존에 존재한다면 삭제하고 다음 값을 이용하여 TXT레코드를 만듭니다.

  1. 이름은 @를 입력하거나 빈칸
  2. TTL 3600으로 하거나 노터치
  3. 값/응답/대상은 v=spf1 include:_spf.google.com ~all
저희 회사의 설정 화면 (domain.com을 각자 도메인으로 변경하세요)

2. DKIM 설정 – 위장 방지

DKIM관리는 다음 문서를 참조하세요.
https://support.google.com/a/answer/174124

구글 관리콘솔 > G Suite > Gmail > 이메일 인증 > 새레코드 생성 으로 이동

이메일 인증 메뉴로 들어가면 아래와 같이 DKIM 설정 화면이 뜹니다.

이 값을 복사하여 DNS 서버로 들어가서 새 레코드 생성하여 TXT레코드에 저장합니다. 각 DNS 설정 서버의 설정 방법에 따라 달라질겁니다. 참고로 저희 회사는 dnsever.com 이라는cloud dns서비스를 사용하고 있습니다.

저희 회사 샘플입니다. 관리 콘솔에 나온 내용을 그대로 txt레코드로 저장합니다.

3. DMARC 사용 – 의심스러운 이메일 처리

DMARC 관리는 다음 문서를 참조하세요.
https://support.google.com/a/answer/2466563?hl=ko

txt레코드에 _dmarc.mydomain.com 과 같이 _dmarc 를 입력하고 txt의 내용에 다음 셋 중 하나를 적용합니다.

v=DMARC1; p=none; rua=mailto:[email protected]

저희 회사 설정 샘플입니다.

99. 요약

세 가지 요소를 설정하여 다음과 같이 DNS 서버가 설정되면 됩니다.

 793 total views