{"id":7193,"date":"2025-09-30T15:31:12","date_gmt":"2025-09-30T06:31:12","guid":{"rendered":"https:\/\/blog.since2020.jp\/?p=7193"},"modified":"2025-09-30T15:31:12","modified_gmt":"2025-09-30T06:31:12","slug":"haversine-distance_glossary","status":"publish","type":"post","link":"https:\/\/since2020.jp\/media\/haversine-distance_glossary\/","title":{"rendered":"\u30cf\u30d0\u30fc\u30b5\u30a4\u30f3\u8ddd\u96e2\uff08Haversine\uff09\u5b8c\u5168\u30ac\u30a4\u30c9 \u2014 \u5b9f\u52d9\u3067\u300c\u6b63\u3057\u304f\u300d\u300c\u901f\u304f\u300d\u8ddd\u96e2\u3092\u51fa\u3059\u305f\u3081\u306e\u5224\u65ad\u57fa\u6e96"},"content":{"rendered":"\n<p>\u30cf\u30d0\u30fc\u30b5\u30a4\u30f3\u8ddd\u96e2\u306e\u5b9a\u7fa9\u30fb\u6570\u5f0f\u30fb\u5b9f\u88c5\u304b\u3089\u3001\u8aa4\u5dee\u306e\u5927\u304d\u3055\u3001Vincenty\u30fbGeographicLib\u3068\u306e\u6bd4\u8f03\u3001PostGIS\u3084\u30e2\u30d0\u30a4\u30eb\u5b9f\u88c5\u3067\u306e\u5b9f\u52d9\u7684\u306a\u9078\u3073\u65b9\u307e\u3067\u3092\u3001\u5177\u4f53\u4f8b\u3068\u6700\u65b0\u60c5\u5831\u3092\u4ea4\u3048\u3066\u4e01\u5be7\u306b\u89e3\u8aac\u3057\u307e\u3059\u3002\u73fe\u5834\u3067\u4f7f\u3048\u308b\u5224\u65ad\u57fa\u6e96\u3068\u30b3\u30fc\u30c9\u4f8b\u3092\u63d0\u4f9b\u3002<\/p>\n\n\n<h2>\u306f\u3058\u3081\u306b\uff1a\u30cf\u30d0\u30fc\u30b5\u30a4\u30f3\u8ddd\u96e2\u3068\u306f\uff08\u76f4\u89b3\u3068\u6570\u5f0f\uff09<\/h2>\n<p><strong>\u30dd\u30a4\u30f3\u30c8<\/strong>\uff1a\u30cf\u30d0\u30fc\u30b5\u30a4\u30f3\u516c\u5f0f\u306f\u300c\u5730\u7403\u3092\u7403\u3068\u4eee\u5b9a\u3057\u305f\u4e0a\u3067\u3001\u7def\u5ea6\u7d4c\u5ea6\u304b\u3089\u5927\u5186\uff08\u6700\u77ed\u7d4c\u8def\uff09\u8ddd\u96e2\u3092\u5b89\u5b9a\u3057\u3066\u8a08\u7b97\u3059\u308b\u300d\u305f\u3081\u306e\u5f0f\u3067\u3059\u3002\u57fa\u672c\u5f0f\u306f\u4ee5\u4e0b\u3002<\/p>\r\n<p>a=sin\u20612(\u0394\u03c62)+cos\u2061\u03c61cos\u2061\u03c62sin\u20612(\u0394\u03bb2)a = \\sin^2\\left(\\frac{\\Delta\\varphi}{2}\\right) + \\cos\\varphi_1\\cos\\varphi_2\\sin^2\\left(\\frac{\\Delta\\lambda}{2}\\right)<\/p>\r\n<p>a=sin2(2\u0394\u03c6)+cos\u03c61cos\u03c62sin2(2\u0394\u03bb)<\/p>\r\n<p>c=2\u22c5atan2\u2061(a,1\u2212a)c = 2\\cdot\\operatorname{atan2}(\\sqrt{a},\\sqrt{1-a})<\/p>\r\n<p>c=2\u22c5atan2(a,1\u2212a)<\/p>\r\n<p>d=R\u22c5cd = R \\cdot c<\/p>\r\n<p>d=R\u22c5c<\/p>\r\n<p>\u3053\u3053\u3067 RRR \u306f\u5730\u7403\u306e\u534a\u5f84\uff08\u591a\u304f\u306e\u5834\u5408 6371 km \u3092\u7528\u3044\u308b\u3053\u3068\u304c\u591a\u3044\uff09\u3002\u30cf\u30d0\u30fc\u30b5\u30a4\u30f3\u306e\u5229\u70b9\u306f\u300c\u5c0f\u89d2\u3067\u306e\u4e38\u3081\u8aa4\u5dee\u306b\u5f37\u3044\u300d\u70b9\u3067\u3059\uff08\u5b9a\u7fa9\u30fb\u89e3\u8aac\u53c2\u7167\uff09\u3002<\/p>\r\n<p><!-- notionvc: 76b6db05-abc2-4245-a6be-fe4617bd7fea --><\/p>\n\n<h2>\u306a\u305c\u300c\u30cf\u30d0\u30fc\u30b5\u30a4\u30f3\u300d\u3092\u4f7f\u3046\u306e\u304b \u2014 \u6570\u5024\u5b89\u5b9a\u6027\u306e\u8a71<\/h2>\n<p>\u53e4\u5178\u7684\u306a\u7403\u9762\u4f59\u5f26\u5247\uff08law of cosines\uff09\u306f\u76f4\u611f\u7684\u3067\u77ed\u3044\u5f0f\u3067\u3059\u304c\u30012\u70b9\u304c\u975e\u5e38\u306b\u8fd1\u3044\uff08\u0394\u304c\u5c0f\u3055\u3044\uff09\u5834\u5408\u306b\u4e38\u3081\u8aa4\u5dee\u3067\u4e0d\u5b89\u5b9a\u306b\u306a\u308a\u307e\u3059\u3002\u30cf\u30d0\u30fc\u30b5\u30a4\u30f3\u306f sin\u20612(\u0394\/2)\\sin^2(\\Delta\/2)sin2(\u0394\/2) \u3092\u4f7f\u3046\u3053\u3068\u3067\u5c0f\u89d2\u9818\u57df\u3067\u306e\u7cbe\u5ea6\u4f4e\u4e0b\u3092\u6291\u3048\u3001\u5b9f\u52d9\u3067\u5b89\u5fc3\u3057\u3066\u4f7f\u3048\u308b\u70b9\u304c\u5927\u304d\u306a\u9b45\u529b\u3067\u3059\u3002\u5b9f\u52d9\u8a18\u4e8b\u3084\u30cf\u30f3\u30ba\u30aa\u30f3\u3067\u3082\u3053\u306e\u7406\u7531\u3067\u30cf\u30d0\u30fc\u30b5\u30a4\u30f3\u304c\u63a8\u5968\u3055\u308c\u308b\u3053\u3068\u304c\u591a\u3044\u3067\u3059\u3002<!-- notionvc: 5424532a-729e-4d91-8961-9b534d9f2a82 --><\/p>\n\n<h2>\u5b9f\u8df5\u30d1\u30fc\u30c8\uff1a\u30b3\u30fc\u30c9\u30fbSQL\u30fb\u6ce8\u610f\u70b9\uff08\u6771\u4eac\u2212\u5927\u962a\u306e\u6bd4\u8f03\uff09<\/h2>\n<b>Python \u5b9f\u88c5\uff08\u63a8\u5968\u30c6\u30f3\u30d7\u30ec\uff09<\/b>\r\n<pre><code class=\"language-python\">import math\r\n\r\ndef haversine(lat1, lon1, lat2, lon2, R=6371000.0):\r\n    phi1, phi2 = math.radians(lat1), math.radians(lat2)\r\n    dphi = math.radians(lat2 - lat1)\r\n    dlambda = math.radians(lon2 - lon1)\r\n    a = math.sin(dphi\/2)**2 + math.cos(phi1)*math.cos(phi2)*math.sin(dlambda\/2)**2\r\n    c = 2*math.atan2(math.sqrt(a), math.sqrt(1-a))\r\n    return R * c  # \u30e1\u30fc\u30c8\u30eb\r\n\r\n# \u4f8b: \u6771\u4eac\u99c5(35.681236,139.767125) - \u5927\u962a\u99c5(34.702485,135.495951)\r\n\r\n<\/code><\/pre>\r\n<p>\u5b9f\u52d9\u3067\u91cd\u8981\u306a\u306e\u306f\u300c\u5165\u529b\u5358\u4f4d\uff08\u5ea6\u304b\u30e9\u30b8\u30a2\u30f3\uff09\u300d\u300c\u623b\u308a\u5358\u4f4d\uff08m\/km\uff09\u300d\u300c\u4f7f\u3046R\u306e\u5b9a\u7fa9\u300d\u3092\u30c1\u30fc\u30e0\u3067\u7d71\u4e00\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u516c\u958b\u3055\u308c\u3066\u3044\u308b\u5b9f\u6e2c\u30b3\u30fc\u30c9\u4f8b\u3082\u591a\u6570\u3042\u308a\u3001\u6771\u4eac\u2212\u5927\u962a\u3067\u306e\u6bd4\u8f03\u3067\u306f\u7403\u9762\u30e2\u30c7\u30eb\u540c\u58eb\u306f\u4e00\u81f4\u3059\u308b\u304c\u6955\u5186\u4f53\u30e2\u30c7\u30eb\u3068\u5dee\u304c\u51fa\u308b\u3053\u3068\u304c\u89b3\u5bdf\u3055\u308c\u3066\u3044\u307e\u3059\uff08\u7d040.7 km \u7a0b\u5ea6\u306e\u5dee\u306e\u5831\u544a\u3042\u308a\uff09\u3002<\/p>\r\n<b>PostGIS \/ SQL\uff08\u73fe\u5834\u3067\u3088\u304f\u4f7f\u3046\uff09<\/b>\r\n<ul>\r\n\t<li><strong>\u7c21\u6613\uff08\u7403\u9762\u8fd1\u4f3c\uff09<\/strong>: <code>ST_DistanceSphere(geom1, geom2)<\/code> \u2014 \u9ad8\u901f\u30fb\u5341\u5206\u7cbe\u5ea6<\/li>\r\n\t<li><strong>\u7cbe\u5bc6\uff08\u6955\u5186\u4f53\uff09<\/strong>: <code>ST_Distance(geography(geom1), geography(geom2))<\/code> \u2014 \u9ad8\u7cbe\u5ea6\uff08\u6955\u5186\u4f53\u8003\u616e\uff09<\/li>\r\n<\/ul>\r\n<p>\u5b9f\u904b\u7528\u3067\u306f\u3001\u307e\u305a <code>ST_DistanceSphere<\/code> \u3067\u9ad8\u901f\u30d5\u30a3\u30eb\u30bf\uff08\u4f8b\uff1a\u534a\u5f84\u25cbm\u4ee5\u5185\u5019\u88dc\u62bd\u51fa\uff09\u3001\u7d5e\u308a\u8fbc\u3093\u3060\u5019\u88dc\u306b\u5bfe\u3057\u3066\u6955\u5186\u4f53\u8ddd\u96e2\u3092\u8a08\u7b97\u3059\u308b\u4e8c\u6bb5\u968e\u304c\u5b9a\u77f3\u3067\u3059\u3002<\/p>\r\n<p><!-- notionvc: 67e66acc-c129-4b1e-a471-9704c63fa4f2 --><\/p>\n\n<h2>\u3069\u306e\u8ddd\u96e2\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u3044\u3064\u9078\u3076\u304b\uff08\u610f\u601d\u6c7a\u5b9a\u30d5\u30ed\u30fc\u30c1\u30e3\u30fc\u30c8\uff09<\/h2>\n<ol>\r\n\t<li><strong>\u77ed\u8ddd\u96e2\uff08\u6570m\u301c\u6570km\uff09\u30fb\u5730\u57df\u9650\u5b9a\uff08\u5e02\u753a\u6751\u5185\uff09<br \/>\r\n<\/strong>\u2192 \u5730\u56f3\u6295\u5f71\uff08UTM \/ \u65e5\u672c\u306a\u3089\u5e73\u9762\u76f4\u89d2\u5ea7\u6a19\u7cfb\uff09\u3092\u4f7f\u3044\u3001\u30e6\u30fc\u30af\u30ea\u30c3\u30c9\u8ddd\u96e2\u3092\u63a1\u7528\u3002\u9053\u8def\u8ddd\u96e2\u304c\u5fc5\u8981\u306a\u3089\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u30a8\u30f3\u30b8\u30f3\u3078\u3002<\/li>\r\n\t<li><strong>\u6c4e\u7528\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\uff08\u534a\u5f84\u691c\u7d22\u3001\u8fd1\u508d\u691c\u7d22\uff09<br \/>\r\n<\/strong>\u2192 \u30cf\u30d0\u30fc\u30b5\u30a4\u30f3\uff08\u307e\u305f\u306f <code>ST_DistanceSphere<\/code>\uff09\u3067\u5341\u5206\u3002\u8a08\u7b97\u30b3\u30b9\u30c8\u3068\u5b9f\u7528\u7cbe\u5ea6\u306e\u30d0\u30e9\u30f3\u30b9\u304c\u826f\u597d\u3002<\/li>\r\n\t<li><strong>\u9577\u8ddd\u96e2\uff08\u5927\u9678\u9593\u3001\u6975\u4ed8\u8fd1\u3001\u53cd\u5bfe\u5074\u306b\u8fd1\u3044\u30b1\u30fc\u30b9\uff09\u30fb\u9ad8\u7cbe\u5ea6\u304c\u8981\u6c42\u3055\u308c\u308b\u5834\u5408<br \/>\r\n<\/strong>\u2192 \u6955\u5186\u4f53\u30e2\u30c7\u30eb\uff08Vincenty\u3001\u3055\u3089\u306b\u63a8\u5968\u306f GeographicLib \u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff09\u3002Vincenty\u306f\u9ad8\u7cbe\u5ea6\u3060\u304c\u300c\u307b\u307c\u53cd\u5bfe\u5074\u306b\u8fd1\u3044\u300d\u70b9\u3067\u53ce\u675f\u3057\u306a\u3044\u554f\u984c\u304c\u77e5\u3089\u308c\u3066\u3044\u308b\u305f\u3081\u3001GeographicLib \u304c\u5b9f\u52d9\u7684\u306b\u63a8\u5968\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/li>\r\n<\/ol>\r\n<p><!-- notionvc: 15a849cd-8ee9-421c-81f4-ccc63fb8a35c --><\/p>\n\n<h2>\u8aa4\u5dee\u306e\u898b\u7a4d\u3082\u308a\u3068\u5b9f\u4f8b\uff1a\u3044\u3064\u6955\u5186\u4f53\u30e2\u30c7\u30eb\u304c\u5fc5\u8981\u304b<\/h2>\n<ul>\r\n\t<li><strong>\u5730\u7403\u534a\u5f84\u306e\u6271\u3044<\/strong>\uff1a\u5e73\u5747\u534a\u5f84 6371 km \u306f\u3088\u304f\u4f7f\u308f\u308c\u307e\u3059\u304c\u3001WGS84 \u3067\u306f\u8d64\u9053\u534a\u5f84 6,378,137 m\u3001\u6975\u534a\u5f84 6,356,752.3 m \u3068\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3069\u306e\u534a\u5f84\u3092\u4f7f\u3046\u304b\u3067\u8aa4\u5dee\u306f\u6570 km \u5358\u4f4d\u3067\u5909\u308f\u308a\u5f97\u307e\u3059\u3002<\/li>\r\n\t<li><strong>\u5b9f\u52d9\u76ee\u5b89<\/strong>\uff1a\r\n\r\n<ul>\r\n\t<li><strong>\u6570m\u301c\u657010m \u7cbe\u5ea6<\/strong> \u304c\u5fc5\u8981 \u2192 \u6295\u5f71\u5ea7\u6a19\u7cfb\uff08\u5e73\u9762\uff09\uff0b\u9ad8\u7cbe\u5ea6\u6e2c\u5730\uff08\u6955\u5186\u4f53\u88dc\u6b63\uff09<\/li>\r\n\t<li><strong>\u6570\u5341m\u301c\u6570\u767em \u7cbe\u5ea6<\/strong>\uff08\u90fd\u5e02\u9593\u306e\u6982\u7b97\uff09 \u2192 \u30cf\u30d0\u30fc\u30b5\u30a4\u30f3\u3067\u5341\u5206<\/li>\r\n\t<li><strong>\u30df\u30ea\u30e1\u30fc\u30c8\u30eb\u301c\u6570mm \u7cbe\u5ea6<\/strong>\uff08\u6e2c\u91cf\u30fb\u6d77\u6d0b\u6e2c\u5730\uff09 \u2192 GeographicLib \u7b49\u306e\u6955\u5186\u4f53\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<p>Karney \u306e\u7814\u7a76\u3067\u306f\u3001GeographicLib \u306e\u5b9f\u88c5\u306f\u6955\u5186\u4f53\u306b\u5bfe\u3057\u3066\u4e38\u3081\u8aa4\u5dee\u30ec\u30d9\u30eb\uff08nm\u301cmm\uff09\u307e\u3067\u9ad8\u7cbe\u5ea6\u3067\u89e3\u3051\u308b\u3053\u3068\u304c\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u4e00\u65b9\u3067 Vincenty \u306f\u307b\u3068\u3093\u3069\u306e\u30b1\u30fc\u30b9\u3067\u9ad8\u7cbe\u5ea6\u306a\u304c\u3089\u3001\u7279\u5b9a\u6761\u4ef6\uff08\u307b\u307c antipodal\uff09\u3067\u89e3\u304c\u5f97\u3089\u308c\u306a\u3044\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u73fe\u5834\u3067\u306f\u3053\u306e\u70b9\u3092\u8e0f\u307e\u3048\u3001GeographicLib \u3092\u6700\u7d42\u624b\u6bb5\u306e\u300c\u9ad8\u7cbe\u5ea6\u30e2\u30fc\u30c9\u300d\u3068\u3057\u3066\u7d44\u307f\u8fbc\u3080\u306e\u304c\u5805\u5b9f\u3067\u3059\u3002<!-- notionvc: c1ad5de8-3ed3-45c5-b6a8-ee6d313083ba --><\/p>\r\n<p><!-- notionvc: 72b12654-e06e-4b6f-9ef0-0ba448e72a47 --><\/p>\n\n<h2>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\uff08\u5927\u898f\u6a21\u30c7\u30fc\u30bf\u5411\u3051\uff09<\/h2>\n<ul>\r\n\t<li><strong>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u4e88\u9078<\/strong>\uff1a\u7def\u5ea6\u7d4c\u5ea6\u306b\u5bfe\u3057\u3066\u5730\u7406\u7684\u30d2\u30e5\u30fc\u30ea\u30f3\u30b0\uff08geohash\uff09\u3084 S2\u3001H3 \u7b49\u306e\u7a7a\u9593\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u5019\u88dc\u3092\u7d5e\u308b \u2192 \u7d5e\u3063\u305f\u5019\u88dc\u306b\u30cf\u30d0\u30fc\u30b5\u30a4\u30f3\/\u53b3\u5bc6\u8ddd\u96e2\u3092\u9069\u7528\u3002<\/li>\r\n\t<li><strong>\u30d9\u30af\u30c8\u30eb\u5316<\/strong>\uff1aPython \u3067\u5927\u91cf\u8a08\u7b97\u3059\u308b\u5834\u5408\u306f NumPy \u30d9\u30fc\u30b9\u3067\u30d9\u30af\u30c8\u30eb\u5316\u3057\u3066 trig \u95a2\u6570\u306e\u547c\u3073\u51fa\u3057\u56de\u6570\u3092\u524a\u6e1b\u3002<\/li>\r\n\t<li><strong>\u30aa\u30f3\u30c7\u30d0\u30a4\u30b9 vs \u30b5\u30fc\u30d0<\/strong>\uff1a\u30e2\u30d0\u30a4\u30eb\u7aef\u672b\u3067\u306f\u8a08\u7b97\u30b3\u30b9\u30c8\u304c\u9650\u3089\u308c\u308b\u305f\u3081\u30cf\u30d0\u30fc\u30b5\u30a4\u30f3\u3092\u4f7f\u3044\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30b5\u30fc\u30d0\u5074\u3067\u6955\u5186\u4f53\u7cbe\u5ea6\u3092\u5f53\u3066\u308b\u904b\u7528\u304c\u826f\u3044\u3002<\/li>\r\n\t<li><strong>\u30ad\u30e3\u30c3\u30b7\u30e5<\/strong>\uff1a\u9759\u7684\u30dd\u30a4\u30f3\u30c8\uff08\u5e97\u8217\u30fb\u62e0\u70b9\u7b49\uff09\u306f\u4e8b\u524d\u306b\u8ddd\u96e2\u8868\u3092\u4f5c\u6210\u3057\u3066\u304a\u304f\u3053\u3068\u3067\u30ec\u30b9\u30dd\u30f3\u30b9\u5411\u4e0a\u3002<\/li>\r\n<\/ul>\r\n<p><!-- notionvc: 9567e9e6-e889-4f3a-866a-ba926aa940ee --><\/p>\n\n<h2>\u3088\u304f\u3042\u308b\u843d\u3068\u3057\u7a74\u3068\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/h2>\n<ul>\r\n\t<li>\u7d4c\u5ea6\u30fb\u7def\u5ea6\u3092<strong>\u5ea6\u3068\u30e9\u30b8\u30a2\u30f3<\/strong>\u3067\u6df7\u540c\u3057\u3066\u3044\u308b\u3002<\/li>\r\n\t<li>\u4f7f\u7528\u3059\u308b <strong>R\uff08\u5730\u7403\u534a\u5f84\uff09<\/strong> \u3092\u30c1\u30fc\u30e0\u3067\u7d71\u4e00\u3057\u3066\u3044\u306a\u3044\uff086371km vs 6378137m\u306a\u3069\uff09\u3002<\/li>\r\n\t<li>\u6975\u4ed8\u8fd1\u30fb\u53cd\u5bfe\u5074\u8fd1\u508d\u3092\u6271\u3046\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3067 Vincenty \u3092\u4f7f\u3044\u7d9a\u3051\u3066\u3044\u308b\uff08GeographicLib \u3078\u306e\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u63a8\u5968\uff09\u3002<\/li>\r\n\t<li>\u9053\u8def\u8ddd\u96e2\uff08\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\uff09\u3068\u300c\u7403\u9762\u8ddd\u96e2\u300d\u3092\u6df7\u540c\u3057\u3066\u3044\u308b\uff08\u5f92\u6b69\/\u8eca\u3067\u306e\u73fe\u5b9f\u8ddd\u96e2\u306f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u6b21\u7b2c\uff09\u3002<\/li>\r\n<\/ul>\r\n<b><strong>\u5c0e\u5165\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8\uff08\u77ed\u7e2e\u7248\uff09<\/strong><\/b>\r\n<ul>\r\n\t<li>\u7cbe\u5ea6\u8981\u4ef6\uff08m\u5358\u4f4d\u304bkm\u5358\u4f4d\u304b\uff09\u3092\u660e\u6587\u5316<\/li>\r\n\t<li>\u4e88\u7b97\uff08\u8a08\u7b97\u30b3\u30b9\u30c8\u30fb\u30ec\u30b9\u30dd\u30f3\u30b9\uff09\u3092\u78ba\u8a8d<\/li>\r\n\t<li>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\uff08S2\/H3\/Geohash\uff09\u3067\u4e88\u9078\u3092\u7d44\u3080\u8a2d\u8a08\u3092\u7528\u610f<\/li>\r\n\t<li>\u6955\u5186\u4f53\u5b9f\u88c5\uff08GeographicLib\u7b49\uff09\u3092\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u3068\u3057\u3066\u6e96\u5099<\/li>\r\n<\/ul>\r\n<p><!-- notionvc: 57aa864d-313f-4238-aa5e-312dfafbb915 --><\/p>\n\n<h2>\u307e\u3068\u3081\u3068\u73fe\u5834\u3078\u306e\u63a8\u5968\u8a2d\u5b9a<\/h2>\n<ul>\r\n\t<li><strong>Web\u30a2\u30d7\u30ea\uff0fLBS\uff08\u4e00\u822c\uff09<\/strong>\uff1a\u307e\u305a\u306f\u30cf\u30d0\u30fc\u30b5\u30a4\u30f3\uff08R=6371km \u306a\u3069\u7d71\u4e00\uff09\u3067\u5b9f\u88c5 \u2192 \u5019\u88dc\u7d5e\u308a\u8fbc\u307f\u5f8c\u306b\u5fc5\u8981\u306a\u3089 <code>ST_Distance(geography)<\/code> \u7b49\u3067\u6955\u5186\u4f53\u8ddd\u96e2\u3092\u7b97\u51fa\u3002<\/li>\r\n\t<li><strong>\u9ad8\u7cbe\u5ea6\uff0f\u5e83\u57df\uff08\u9577\u8ddd\u96e2\u30fb\u6e2c\u91cf\uff09<\/strong>\uff1aGeographicLib\uff08Karney \u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\uff09\u3092\u63a1\u7528\u3002Vincenty \u306f\u4fbf\u5229\u3060\u304c\u53cd\u5bfe\u5074\u8fd1\u508d\u3067\u306e\u53ce\u675f\u554f\u984c\u304c\u3042\u308b\u305f\u3081\u6ce8\u610f\u3002<\/li>\r\n\t<li><strong>\u5730\u57df\u9650\u5b9a\u306e\u9ad8\u7cbe\u5ea6<\/strong>\uff1a\u6295\u5f71\u5ea7\u6a19\u7cfb\uff08\u5e73\u9762\uff09\uff0b\u6e2c\u5730\u88dc\u6b63\u3067\u6700\u3082\u52b9\u7387\u7684\u3002<\/li>\r\n<\/ul>\r\n<p><!-- notionvc: 1bf6aa45-616a-491e-9fd0-92a3211fa696 --><\/p>","protected":false},"excerpt":{"rendered":"<p>\u30cf\u30d0\u30fc\u30b5\u30a4\u30f3\u8ddd\u96e2\u306e\u5b9a\u7fa9\u30fb\u6570\u5f0f\u30fb\u5b9f\u88c5\u304b\u3089\u3001\u8aa4\u5dee\u306e\u5927\u304d\u3055\u3001Vincenty\u30fbGeographicLib\u3068\u306e\u6bd4\u8f03\u3001PostGIS\u3084\u30e2\u30d0\u30a4\u30eb\u5b9f\u88c5\u3067\u306e\u5b9f\u52d9\u7684\u306a\u9078\u3073\u65b9\u307e\u3067\u3092\u3001\u5177\u4f53\u4f8b\u3068\u6700\u65b0\u60c5\u5831\u3092\u4ea4\u3048\u3066\u4e01\u5be7\u306b\u89e3\u8aac\u3057\u307e\u3059\u3002\u73fe\u5834\u3067\u4f7f\u3048\u308b\u5224\u65ad [&hellip;]<\/p>\n","protected":false},"author":22,"featured_media":7194,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","swell_btn_cv_data":"","footnotes":"","_wp_rev_ctl_limit":""},"categories":[1249],"tags":[1140,1139,1138],"class_list":["post-7193","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-knowledge","tag-vincentygeographiclib","tag-1139","tag-1138"],"_links":{"self":[{"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/posts\/7193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/comments?post=7193"}],"version-history":[{"count":0,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/posts\/7193\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/media\/7194"}],"wp:attachment":[{"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/media?parent=7193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/categories?post=7193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/tags?post=7193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}