:: 게시판
:: 이전 게시판
|
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다. 통합 규정을 준수해 주십시오. (2015.12.25.)
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
18/03/29 11:40
맨하탄 말고 haversine formula 를 찾아서 쓰시면 됩니다.
kms_per_radian = 6371.0088 으로 계산하면 구하기 쉽습니다.
18/03/29 12:02
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * np.arcsin(sqrt(a)) km = 6367 * c 이거 말씀하시는 건가요?(죄송합니다. 공식이 파이썬 코드) 맨하탄을 쓰는 이유가 택시의 이동거리를 추측하는 것이라서요. 직선거리가 아니라. 아니면 제가 잘못 생각하고 있는 건가요? (수포자임을 감안해주세요)
18/03/29 12:55
맨하탄 공식이라고 주신 공식을 자세히 보시면
d = |x1 - x2| + |y1 - y2| 결국 두 점의 차이를 절대값 취한 숫자를 더한 = 직선거리 라서 구하려는 값은 결국 같을 겁니다. 위도 경도의 거리는 haversine 을 쓰는 것이 맞습니다. 자세한 내용이 https://en.wikipedia.org/wiki/Taxicab_geometry 위키에 잘 나와있네요.
18/03/29 16:38
자세히 코드를 살펴보니위에 단 댓글 공식 마지막에 haversine을 사용하긴 합니다. 답변 감사드립니다.(오히려 본문코드보다는 댓글 코드가 정확성이- 케글 문제 머신러닝 높게 나오긴 하네요.)
18/03/29 16:27
*범위 실수한거 수정했습니다.
왜 맨하튼 거리계를;; 문제에서 맨하튼 거리계를 사용했을 때의 거리를 구하라고 한건가요? 여튼 거리계 사용을 둘째 치고 질문에서 문제가 된 부분의 결론부터 말하자면 차열하게 님께서 라디안이랑 도 구분을 안하셔서 오류가 난거에요. 일반적으로 cos(40)이라 작성하면 컴퓨터는 40°가 아니라 40라디안으로 인식합니다. 애초에 cos 함수가 -90° < x < 90° 범위에서 양수인데 코사인 40°의 답이 음수로 나올 수 가 없죠. cos(37.5degrees) * 6400 * 2 * 3.14 / 360 = 88.573492925 이니 해당 블로그의 88이라는건 제대로 된 계산이고, 40도의 경우에는 cos(40degrees) * 6400 * 2 * 3.14 / 360 = 85.5246062718 40.6643도의 경우에는 cos(40.6643degrees) * 6400 * 2 * 3.14 / 360 = 84.6868327264 정도로 나오네요.
18/03/29 16:36
맨하탄 거리를 쓴 것은 구하려고 하는 게 택시 이동거리입니다. 점과 점을 잇는 직선이 가장 최단거리이긴 한데 택시가 현실적으로 건물에 가로막혀 그렇게 가지 못할테니 구획정리가 비교적 잘 되어있는 뉴욕이라 맨하탄 거리가 가장 비슷하지 않을까 생각했습니다.(정확히는 스터디에서 의견교환끝에 나온 결론)
질문글 올린 이후에는 85.xxx이란 숫자를 사용했습니다. 88보다는 미세하지만 좀 더 정확성이 높게 나왔습니다.(사실 이건 케글 문제 뉴욕택시 이동시간 맞추기입니다. 위도경도를 잘 모르니 힘드네요. 답변 감사합니다.)
18/03/29 16:44
실제 택시 이동거리를 구하고자 한다면 생각해야할 부분이 또 하나 있는게
실제로 모든 건물들이 위, 경도에 맞춰서 수평 수직하게 격자 무늬로 있는게 아니라서요.. |x1 - x2|*1도당 위도 + |y1 - y2|*1도당 경도 로 계산하면 실제 이동 거리랑 차이가 제법 날겁니다.
18/03/29 16:36
맨하탄 거리를 쓴 것은 구하려고 하는 게 택시 이동거리입니다. 점과 점을 잇는 직선이 가장 최단거리이긴 한데 택시가 현실적으로 건물에 가로막혀 그렇게 가지 못할테니 구획정리가 비교적 잘 되어있는 뉴욕이라 맨하탄 거리가 가장 비슷하지 않을까 생각했습니다.(정확히는 스터디에서 의견교환끝에 나온 결론)
질문글 올린 이후에는 85.xxx이란 숫자를 사용했습니다. 88보다는 미세하지만 좀 더 정확성이 높게 나왔습니다.(사실 이건 케글 문제 뉴욕택시 이동시간 맞추기입니다. 위도경도를 잘 모르니 힘드네요. 답변 감사합니다.)
|