php mysql point類型進行轉換

2024年12月27日00:04:04 科技 1583

最近項目中用到地理坐標,所以mysql就使用了point類型,當然查詢的時候可以用mysql的空間函數實現,ST_X(p):獲取點 p 的 X 坐標,ST_Y(p):獲取點 p 的 Y 坐標。

但我覺得還是用php實現好點,讓它自動轉換,因為我用的thinkphp,在 ThinkPHP 框架中,get+字段名+Attr 是一種用於定義模型屬性訪問器(Accessor)的方法。屬性訪問器允許你在獲取模型屬性時對數據進行自定義處理。這種機制通常用于格式化數據、轉換數據類型或進行其他數據處理操作。

我的location字段保存了地理坐標,所以我在模型層定義了一個getLocationAttr方法,讓它自動轉換,實現方法如下,希望有相同需求的人可以用上

    public function getLocationAttr($point): array
    {
        $offset = 4;  // 跳過前 4 個位元組
        $byteOrder = ord($point[$offset]);
        $srid = unpack($byteOrder === 1 ? 'V' : 'N', substr($point, $offset + 1, 4))[1]; // 使用 'V' 解包小端序,'N' 解包大端序
        if ($srid !== 1) { // 1 表示 Point 類型
            return [
                'longitude' => null,
                'latitude' => null
            ];
        }
        $offset += 5; // 1 位元組位元組序 + 4 位元組幾何類型
        if ($byteOrder === 1) {
            $x = unpack('d', substr($point, $offset, 8))[1];
            $y = unpack('d', substr($point, $offset + 8, 8))[1];
        } else { // 大端序
            $x = unpack('d', strrev(substr($point, $offset, 8)))[1];
            $y = unpack('d', strrev(substr($point, $offset + 8, 8)))[1];
        }
        return [
            'longitude' => $x,
            'latitude' => $y,
        ];
    }


php mysql point類型進行轉換 - 天天要聞

查詢出來location自動轉換


php mysql point類型進行轉換 - 天天要聞

php mysql point類型進行轉換 - 天天要聞

php mysql point類型進行轉換 - 天天要聞

php mysql point類型進行轉換 - 天天要聞

科技分類資訊推薦

小心拼多多廣告自動騙扣你的錢 - 天天要聞

小心拼多多廣告自動騙扣你的錢

筆者經常在網絡上購物,對於一些購物廣告也時常點擊看一下,遇到合適的商品也會下單。過去,筆者在手機上設置了識臉支付和指紋支付,後來發現,識臉支付和指紋指紋經常發生誤支付的情況,便取消了這兩種支付手段,很多購網購者也都因為這個原因取消了這兩種支
吃土半年就為換套智能鎖,結果還被坑了:智能鎖牢記「5不選」 - 天天要聞

吃土半年就為換套智能鎖,結果還被坑了:智能鎖牢記「5不選」

攢了大半年錢換智能鎖,結果用起來各種糟心,這事誰遇上都得憋屈。門鎖是家的第一道防線,選錯了可不只是花錢打水漂,搞不好連安全感都搭進去。市面上那些花里胡哨的功能,聽着高級用着雞肋,白白掏空錢包還添堵。先說指紋識別,光學款看着方便實際漏洞百出,
被誤解的Linux:我們錯過的,遠不止一個系統 - 天天要聞

被誤解的Linux:我們錯過的,遠不止一個系統

提到電腦系統,你的第一反應是不是Windows?頂多,再加一個蘋果的macOS。  但如果我說出「Linux」這個詞,你腦海里浮現的,恐怕就是一串串滾動的綠色代碼,和一個戴着眼鏡、在昏暗房間里埋頭敲鍵盤的「大神」形象吧?
擬入主688585,智元機械人要來A股了!公司聯合創始人曾是華為「天才少年」 - 天天要聞

擬入主688585,智元機械人要來A股了!公司聯合創始人曾是華為「天才少年」

7月8日,上緯新材(688585.SH,股價7.78元,市值31.38億元)發佈公告稱,智元機械人擬至少收購其63.62%股份。待本次股權交易完成後,上緯新材控股股東將變更為智元機械人及其管理團隊共同持股的主體,實際控制人將變更為鄧泰華,核心團隊包括稚暉君等。 本次交易如成功落地,有望成為國九條和併購六條實施以來,新質生產力...
天融信WAAP助力應用安全升級,護航大模型應用落地 - 天天要聞

天融信WAAP助力應用安全升級,護航大模型應用落地

在雲原生架構、微服務技術普及及移動應用深度滲透的當下,Web業務部署與管理模式正被系統性重塑。應用交互流量增長、API端點激增、BOT攻擊上升,大模型還顛覆了Web攻防規則,Web暴露面急劇擴張,應用層安全風險持續升級。天融信WAAP作為新一代應用安全解決方案,以WAF技術為核心,融合API安全、BOT攻擊管理、抗DDoS防護等技...
華為Mate30突發更新!五年前的老旗艦,還能迎來鴻蒙5.0? - 天天要聞

華為Mate30突發更新!五年前的老旗艦,還能迎來鴻蒙5.0?

353MB小更新,Mate30又活了?鴻蒙5.0真的近了說實話,當我看到Mate30彈出系統更新提醒的那一刻,心裏真的咯噔一下——不是因為更新多重磅,而是因為這台2019年的老旗艦,居然還在被官方惦記着。在如今換機如換季的時代,很多品牌連兩