우우양우우우우 ...

 

내 인생 처음의 시험이었고, 그 시험 결과였다.

과목은 기억나지 않으나 결과가 말해주듯 나는 매우 평범한 아이였다. (국/영/수/과학/사회/도덕 뭐 이런게 아니었을까 싶다)

 

학교에서 받은 수업을 집에서 복습따위도 하지 않았고

그러나 그 결과가 그리 나쁘지도 좋지도 않았다. 

그냥 평범 그 자체였을까?

 

 

그러던 내가 대학을 갔고, 그리고 대학원을 갔고, 그리고 회사에 다니고 있고 몇개의 프로젝트를 리딩?하고 있다.

 

 

나쁘지 않은 동료들과

나쁘지 않은 회사에서

나쁘지 않은 성과를 받고 있지만, 마음 한켠에서 계속 불안함이나 충족되지 않는 그 느낌이 무엇인지 모르겠다.

 

 

약 8년전의 학생들의 사고가 치유되기 까지 몇개월이 걸렷고, 잊혀질 즈음 비슷한듯 비슷하지 않은 사고가 발생했고

그 장소가 정말 집에서 걸어서 갈 수 있는 거리 였기 때문이었을까..

무엇때문인진 모르겠지만 찾아봐야겠다.

 

 

나쁘지 않게 살아왔던 내가, 어떤곳에서의 충만감을 느끼고 싶은데

어쩌면, 내가 진정으로 좋아하는 것 으로부터의 인정일지도 모르겠다.

 

 

오랜만에 시간적인 여유가 생겼다. 

앞으로도 하루에 몇시간은 낼 수 있을 것 같다.

 

 

또 남겨본다.

 

 

오늘의 지도이야기 : 나쁘지 않게 살았으나, 행복하진 않음.

반응형

'오늘의 지도 (Map's Today)' 카테고리의 다른 글

3년만인가...  (2) 2022.09.03

 

 

 

유튜브도해보려고 했고, 영어로 블로그를 써보려고 했다.

영어로 쓴 블로그는 분석이나 기술보다도 지도 철학 (a.k.a., Cartography) 에 대해서, 그리고 지도 데이터에 대해서 이야기를 해보고 싶었다.

 

나처럼 게으른 사람이 있을까..

몇 달 열심히 했다. 몇 달 열심히 했는데 귀찮아 졌다.

그리고 영어를 못하는것을 알게되었고 (우리말도 못함) 개인의 일과 회사의 일이 겹쳐져 거의 모든 온라인 사회 관계와 단절되어있었다.

 

그러다가 다시 현타가 왔는지, 혹은 살아야 겠다?는 생각 때문인지, 아니면 나태한 나를 보고 한심했는지 다시 마음을 다져본다.

 

블로그도 스킨도 편집하고, 카테고리도 다 정리했다.

 

우연의 일치일까.. 새로 시작되는

진짜 오랜만에 쓰는 글이다. 정확히는 3년만이다.

정말 아무 의미없이 블로그를 다시 시작해야겠다고 생각는데 2019년 9월 3일이 마지막글이었다.

 

 

 

기술 블로그에서 이제 내 이야기를 써보고 싶다.

반응형

'오늘의 지도 (Map's Today)' 카테고리의 다른 글

나쁘지 않음.  (0) 2022.11.09

그간, 지도를 만들기 위해서 이런 저런 기술을 습득해왔습니다.

어쩌다 보니, 박사과정까지 가게 되었고 박사는 수료한채 (하지만, 논문 검색을 하면 그래도 두자리수 이상의 논문이 나오기에, 학계에 충분한 발자취를 남겼다고 생각합니다..) 회사로 오게 되었습니다.

회사는 대단한곳입니다. 학교와 달리 엄청난 데이터와 인프라가 있습니다. 그리고 실력좋은 동료들도..

기술적으로 성장하였습니다. 기술적으로 뭔가를 남기고 싶었습니다. 그렇지만 회사에 가서 많이 부족함을 느꼇습니다. 거드름을 피우기엔 아직 실력이 부족합니다. 

한편, 제가 다룰 수 있는 데이터와 도구가 이전보다 더 제한적으로 되었습니다.

 

제가 무엇을 더 기여할 수 있을까 고민하였습니다.

지도를 만들기위해서 기술을 배웠고, 지도를 만들면서 어떻게 더 나은 지도를 만들지 꾸준히 생각했습니다.

기술은 북미, 유럽 형님들이 잘 해주시는것 같습니다.

그렇다면 제가 해야 할 것은 지도를 만들때 나의 의도를 잘 담아야하는 것 같습니다. 혹은 나의 의도를 지도를 통해서 잘 전달해야하는 것 같습니다.

그러니까...기술보다 방향을 제안해보려고 합니다.

가령, 얘네들은 A로 표현하고, B로 표현했네? 왜 그랬지? 무슨 의도일까? 그러니까 나는 어떻게 해야하지? 같은 쓸데없는 글입니다. 

 

Cartographer. 이것은 제가 원하는 타이틀입니다.

새로운 둥지는 이곳입니다. 오랜기간 한국생활로 영어 글쓰기가 서툴러졌지만, 계속 proofreading하고 있습니다.

 https://pil0706.github.io/

반응형

N개의 포인트가 포함된 테이블이 있고, 각 포인트별 가장 가까운 포인트를 매칭시키고 싶었음

스택오버플로우에는 고정된 1개의 포인트에서 다른 포인트 셋의 거리를 구하는 것이 주된 정보여서 한동안 헤맸는데,

왜 Arc나 Q에서는 흔하게 있는 최근린분석을 왜 기본 함수로 안갖고 있는 것이 의문이긴 함


TRIAL #1

처음으로 작성한 코드는 아무 생각없이 작성했더니 distance matrix를 만드는 코드를 만들게 되어버림


SELECT ST_Distance(a.[shape], b.[shape]))

  FROM [table] a, [table] b

  ORDER BY st_distance


아무 생각없이 짠 코드는 N^2의 시간을 요구하고 LIMIT을 걸어서 보면 절대론 해선 안되겠다는 생각을 하게 됨



TRIAL #2

굳이 distance matrix를 만들 필요가 없으므로 한가지 꼼수를 생각해봤는데,

해당 포인트들을 하나의 멀티 포인트로 변환한다음에 매번 거리 계산을 할 때 자기 자신을 빼고 거리를 재는 방식

결과는 성공적으로 나오긴 하는데 어떤 포인트와 정확히 매칭이 되는지는 모르고 거리만 return함

또한 인덱싱이 되지 않고, 2N의 시간이 걸려 포인트가 많아질수록 연산량이 대폭 증가


WITH point_set 

  AS(SELECT ST_Multi(ST_Union([shape])) 

      FROM [table]

SELECT a.[id], ST_Distance(a.[shape], ST_Difference(b.st_multi, a.[shape]))

  FROM [table] a, point_set b

  ORDER BY st_distance

  

TRIAL #3

KNN을 이용한 거리를 재면 인덱싱이 된다고 해서 이 방법으로 시도

<-> 을 LIMIT 1을 걸어서 최근값 1개만 받아내고, 자기자신을 제외하기 위해 id가 서로 다른 <> 값들을 받아냄

인덱싱이 되어있기 때문에 LIMIT 1로 상당히 빠르게 값을 return 하고,

그 결과를 CROSS JOIN 해서 각 포인트들이 서로 매칭되는 것을 알 수 있음 


SELECT a.mid, a.name_dp, closest_pt.mid, closest_pt.dist

  FROM [table] a

  CROSS JOIN LATERAL

    (SELECT mid, name_dp,

      a.[shape] <-> b.[shape] as dist

      FROM [table] b

      WHERE a.[id] <> b.[id]

      ORDER BY a.[shape] <-> b.[shape]

     LIMIT 1) AS closest_pt

  ORDER BY closest_pt.dist


APPLICATION 

위의 방식을 이용해서 내가 원하는 데이터에 적용해봄

내가 다룰 데이터는 만개 단위의 포인트이므로, 분석을 하고자 하는 지역을 적당한 크기로 자르고 싶었음

따라서 해당하는 좌표값을 찾은 뒤에 적당한 반경을 설정하고 그 영역에 속하는 포인트들 중 

특정 칼럼에 원하는 값을 지닌 포인트들만 골라서 다시 테이블로 만들어 분석함


WITH sampling_table

  AS(SELECT

      FROM [table]

      WHERE [column] IN ([target value])

      AND ST_DWithin(

        [shape]

        ST_SetSRID(ST_MakePoint([X][Y]), [EPSG]), [radius]))

SELECT a.[id], closest_pt.[id], closest_pt.dist

  FROM sampling_table a

  CROSS JOIN LATERAL

    (SELECT [id],

      a.[shape] <-> b.[shape] as dist

      FROM sampling_table b

      WHERE a.[id] <> b.[id]

      ORDER BY a.[shape] <-> b.[shape]

     LIMIT 1) AS closest_pt

  ORDER BY closest_pt.dist



기존에 10분이 넘게 걸리던 작업이 1분 내로 값이 나옴

기쁨

반응형

+ Recent posts