pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

  • <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="sfj3mhr" 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="yjrgftw" 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="jskhlvp" id='iQSVk'><tfoot id='iQSVk'></tfoot><dl id='iQSVk'><fieldset id='iQSVk'></fieldset></dl></div>
                            主站蜘蛛池模板: 安规_综合测试仪,电器安全性能综合测试仪,低压母线槽安规综合测试仪-青岛合众电子有限公司 | 板式换网器_柱式换网器_自动换网器-郑州海科熔体泵有限公司 | 北京燃气公司 用户服务中心 | 贝朗斯动力商城(BRCPOWER.COM) - 买叉车蓄电池上贝朗斯商城,价格更超值,品质有保障! | 合肥触摸一体机_触摸查询机厂家_合肥拼接屏-安徽迅博智能科技 | 四探针电阻率测试仪-振实密度仪-粉末流动性测定仪-宁波瑞柯微智能 | 锌合金压铸-铝合金压铸厂-压铸模具-冷挤压-誉格精密压铸 | 山西3A认证|太原AAA信用认证|投标AAA信用证书-山西AAA企业信用评级网 | 赛尔特智能移动阳光房-阳光房厂家-赛尔特建筑科技(广东)有限公司 | 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | 带式压滤机_污泥压滤机_污泥脱水机_带式过滤机_带式压滤机厂家-河南恒磊环保设备有限公司 | 电缆接头-防爆电缆接头-格兰头-金属电缆接头-防爆填料函 | 油缸定制-液压油缸厂家-无锡大鸿液压气动成套有限公司 | 游动电流仪-流通式浊度分析仪-杰普仪器(上海)有限公司 | BHK汞灯-百科|上海熙浩实业有限公司| 牛奶检测仪-乳成分分析仪-北京海谊 | 手板-手板模型-手板厂-手板加工-生产厂家,[东莞创域模型] | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | 仓储笼_仓储货架_南京货架_仓储货架厂家_南京货架价格低-南京一品仓储设备制造公司 | 黄石妇科医院_黄石东方女子医院_黄石东方妇产医院怎么样 | atcc网站,sigma试剂价格,肿瘤细胞现货,人结肠癌细胞株购买-南京科佰生物 | 宝宝药浴-产后药浴-药浴加盟-艾裕-专注母婴调养泡浴 | 东莞螺丝|东莞螺丝厂|东莞不锈钢螺丝|东莞组合螺丝|东莞精密螺丝厂家-东莞利浩五金专业紧固件厂家 | 博客-悦享汽车品质生活| 生物制药洁净车间-GMP车间净化工程-食品净化厂房-杭州波涛净化设备工程有限公司 | 合肥钣金加工-安徽激光切割加工-机箱机柜加工厂家-合肥通快 | 德国进口电锅炉_商用电热水器_壁挂炉_电采暖器_电热锅炉[德国宝] | 威客电竞(vk·game)·电子竞技赛事官网 | 包塑软管|金属软管|包塑金属软管-闵彬管业 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 | 拉伸膜,PE缠绕膜,打包带,封箱胶带,包装膜厂家-东莞宏展包装 | 江苏齐宝进出口贸易有限公司 | 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | 广东护栏厂家-广州护栏网厂家-广东省安麦斯交通设施有限公司 | 电梯装饰-北京万达中意电梯装饰有限公司 | 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 美国查特CHART MVE液氮罐_查特杜瓦瓶_制造全球品质液氮罐 | 粉末包装机-给袋式包装机-全自动包装机-颗粒-液体-食品-酱腌菜包装机生产线【润立机械】 | 上海律师咨询_上海法律在线咨询免费_找对口律师上策法网-策法网 广东高华家具-公寓床|学生宿舍双层铁床厂家【质保十年】 |