久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

  • <i id='E7ACZ'><tr id='E7ACZ'><dt id='E7ACZ'><q id='E7ACZ'><span id='E7ACZ'><b id='E7ACZ'><form id='E7ACZ'><ins id='E7ACZ'></ins><ul id='E7ACZ'></ul><sub id='E7ACZ'></sub></form><legend id='E7ACZ'></legend><bdo id='E7ACZ'><pre id='E7ACZ'><center id='E7ACZ'></center></pre></bdo></b><th id='E7ACZ'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='E7ACZ'><tfoot id='E7ACZ'></tfoot><dl id='E7ACZ'><fieldset id='E7ACZ'></fieldset></dl></div>
    • <bdo id='E7ACZ'></bdo><ul id='E7ACZ'></ul>
    <tfoot id='E7ACZ'></tfoot>
  • <legend id='E7ACZ'><style id='E7ACZ'><dir id='E7ACZ'><q id='E7ACZ'></q></dir></style></legend>

      1. <small id='E7ACZ'></small><noframes id='E7ACZ'>

        用 SQLite 計算大圓距離

        Calculating Great-Circle Distance with SQLite(用 SQLite 計算大圓距離)
          1. <legend id='Keq8T'><style id='Keq8T'><dir id='Keq8T'><q id='Keq8T'></q></dir></style></legend>

              <i id='Keq8T'><tr id='Keq8T'><dt id='Keq8T'><q id='Keq8T'><span id='Keq8T'><b id='Keq8T'><form id='Keq8T'><ins id='Keq8T'></ins><ul id='Keq8T'></ul><sub id='Keq8T'></sub></form><legend id='Keq8T'></legend><bdo id='Keq8T'><pre id='Keq8T'><center id='Keq8T'></center></pre></bdo></b><th id='Keq8T'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='Keq8T'><tfoot id='Keq8T'></tfoot><dl id='Keq8T'><fieldset id='Keq8T'></fieldset></dl></div>
            • <small id='Keq8T'></small><noframes id='Keq8T'>

                <tbody id='Keq8T'></tbody>

                • <bdo id='Keq8T'></bdo><ul id='Keq8T'></ul>
                  <tfoot id='Keq8T'></tfoot>

                • 本文介紹了用 SQLite 計算大圓距離的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  這是我的問題,我有一個包含位置和緯度/經度的 SQLite 表.基本上我需要:

                  Here is my problem, I have a SQLite table with locations and latitudes / longitudes. Basically I need to:

                  SELECT location, HAVERSINE(lat, lon) AS distance FROM location ORDER BY distance ASC;
                  

                  HAVERSINE() 是一個 PHP 函數,它應該返回 大圓距離(以英里或公里為單位)給定一對緯度和經度值.其中一對應由 PHP 提供,另一對應由 locations 表中的每個緯度/經度行提供.

                  HAVERSINE() is a PHP function that should return the Great-Circle Distance (in miles or km) given a pair of latitude and longitude values. One of these pairs should be provided by PHP and the other pair should be provided by each latitude / longitude row available in the locations table.

                  因為 SQLite 沒有任何地理空間擴展 (AFAIK SpatiaLite 存在,但仍然......) 我猜最好的方法是將自定義函數與 PDO 方法之一一起使用:

                  Since SQLite doesn't has any Geo Spatial extension (AFAIK SpatiaLite exists but still...) I'm guessing the best approach would be to use a custom function with either one of the PDO methods:

                  • PDO::sqliteCreateFunction()
                  • PDO::sqliteCreateAggregate()

                  我認為對于這種情況 PDO::sqliteCreateFunction() 就足夠了,但是我對這個函數的有限經驗可以簡化為類似于 PHP 手冊中提供的用例:

                  I think for this case PDO::sqliteCreateFunction() would be enough, however my limited experience with this function can be reduced to usage cases similar to the one provided in the PHP Manual:

                  $db = new PDO('sqlite:geo.db');
                  
                  function md5_and_reverse($string) { return strrev(md5($string)); }
                  
                  $db->sqliteCreateFunction('md5rev', 'md5_and_reverse', 1);
                  $rows = $db->query('SELECT md5rev(filename) FROM files')->fetchAll();
                  

                  我在弄清楚如何讓 SQLite 用戶定義函數同時處理來自 PHP 和表數據的數據時遇到了一些麻煩,如果有人能幫我解決這個問題,我將不勝感激問題,同時也更好地理解 SQLite UDF(SQLite IMO 的一大勝利).

                  I'm having some trouble figuring out how can I get an SQLite user defined function to process data from PHP and table data at the same time and I would appreciate if someone could help me solve this problem while also understanding SQLite UDFs (a big win of SQLite IMO) a little bit better.

                  提前致謝!

                  推薦答案

                  來自您的有趣鏈接".

                  function sqlite3_distance_func($lat1,$lon1,$lat2,$lon2) {
                      // convert lat1 and lat2 into radians now, to avoid doing it twice below
                      $lat1rad = deg2rad($lat1);
                      $lat2rad = deg2rad($lat2);
                      // apply the spherical law of cosines to our latitudes and longitudes, and set the result appropriately
                      // 6378.1 is the approximate radius of the earth in kilometres
                      return acos( sin($lat1rad) * sin($lat2rad) + cos($lat1rad) * cos($lat2rad) * cos( deg2rad($lon2) - deg2rad($lon1) ) ) * 6378.1;
                  }
                  
                  $db->sqliteCreateFunction('DISTANCE', 'sqlite3_distance_func', 4);
                  

                  然后進行查詢:

                  "SELECT * FROM location ORDER BY distance(latitude,longitude,{$lat},{$lon}) LIMIT 1"
                  

                  <小時>

                  編輯(按 QOP):我終于再次需要這個,這個解決方案效果很好,我只是稍微修改了代碼,讓它不那么冗長,并且可以處理非數字值優雅地,這里是:


                  EDIT (by QOP): I finally needed this again and this solution worked out great, I just ended up modifying the code a bit to it is a bit less verbose and handles non-numeric values gracefully, here it is:

                  $db->sqliteCreateFunction('distance', function () {
                      if (count($geo = array_map('deg2rad', array_filter(func_get_args(), 'is_numeric'))) == 4) {
                          return round(acos(sin($geo[0]) * sin($geo[2]) + cos($geo[0]) * cos($geo[2]) * cos($geo[1] - $geo[3])) * 6378.14, 3);
                      }
                  
                      return null;
                  }, 4);
                  

                  這篇關于用 SQLite 計算大圓距離的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  Deadlock exception code for PHP, MySQL PDOException?(PHP、MySQL PDOException 的死鎖異常代碼?)
                  PHP PDO MySQL scrollable cursor doesn#39;t work(PHP PDO MySQL 可滾動游標不起作用)
                  PHP PDO ODBC connection(PHP PDO ODBC 連接)
                  Using PDO::FETCH_CLASS with Magic Methods(使用 PDO::FETCH_CLASS 和魔術方法)
                  php pdo get only one value from mysql; value that equals to variable(php pdo 只從 mysql 獲取一個值;等于變量的值)
                  MSSQL PDO could not find driver(MSSQL PDO 找不到驅動程序)

                    <small id='iQSVk'></small><noframes id='iQSVk'>

                    • <bdo id='iQSVk'></bdo><ul id='iQSVk'></ul>
                      <tfoot id='iQSVk'></tfoot>
                        <tbody id='iQSVk'></tbody>
                          <legend id='iQSVk'><style id='iQSVk'><dir id='iQSVk'><q id='iQSVk'></q></dir></style></legend>
                          <i id='iQSVk'><tr id='iQSVk'><dt id='iQSVk'><q id='iQSVk'><span id='iQSVk'><b id='iQSVk'><form id='iQSVk'><ins id='iQSVk'></ins><ul id='iQSVk'></ul><sub id='iQSVk'></sub></form><legend id='iQSVk'></legend><bdo id='iQSVk'><pre id='iQSVk'><center id='iQSVk'></center></pre></bdo></b><th id='iQSVk'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='iQSVk'><tfoot id='iQSVk'></tfoot><dl id='iQSVk'><fieldset id='iQSVk'></fieldset></dl></div>
                            主站蜘蛛池模板: 亚洲综合一区二区三区 | 精品欧美激情精品一区 | 亚洲日韩中文字幕一区 | 国产高清在线 | 日韩午夜精品 | 国产精品视频一 | 中日韩av| 国产免费一二三区 | 久久99精品久久久久久秒播九色 | 中日av| 欧美一区二区三区大片 | 亚洲电影免费 | 欧美二区在线 | 午夜精品久久 | 国产精品久久久久无码av | 欧美视频偷拍 | 91九色视频在线 | 国产精品一区一区三区 | 欧美a级网站 | 二区亚洲 | 亚洲播放 | 久久r久久 | 国产婷婷精品av在线 | 久久国产精品网 | 久久高清免费视频 | 国产美女h视频 | 97人人超碰 | 7777在线视频 | 日韩精品在线一区 | 国产精品特级片 | 日韩一区二区在线播放 | 成人在线免费观看视频 | 国产精品免费一区二区三区四区 | 这里有精品 | 久久婷婷国产香蕉 | 真人一级毛片 | 国产精品永久久久久 | 国产精品观看 | 黄免费观看视频 | 天天操综合网 | 日本五月婷婷 |