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類型進行轉換 - 天天要聞

科技分類資訊推薦

博主:未來三年將出現新的手機頭部品牌 競爭遠未結束 - 天天要聞

博主:未來三年將出現新的手機頭部品牌 競爭遠未結束

【CNMO科技消息】據小米公司董事長雷軍轉發的數據,小米智能手機業務在中國市場繼續保持強勁勢頭。在2024年第一季度成功登頂後,第二季度小米以1141.76萬激活量再次蟬聯中國市場第一的位置。隨後,有博主引用相關數據表示,未來三年將出現新的中國手機頭部品牌。小米手機 據博主分享的數據,在AI手機時代來臨之前,智能手機...
破局內卷,上汽大眾半年答卷詮釋合資2.0轉型路徑 - 天天要聞

破局內卷,上汽大眾半年答卷詮釋合資2.0轉型路徑

中國車市的2025年上半年,空氣中瀰漫著價格戰的硝煙與「反內卷」的呼聲。當工信部、行業協會接連發聲,呼籲行業回歸價值競爭的本質,市場的分化也日益清晰。與新勢力陣營正在加速洗牌不同,今年以來,主流合資車企的銷量普遍增長,呈現出強勁的回暖態勢。在這其中,一汽豐田、一汽-大眾、上汽大眾、上汽通用、廣汽豐田等頭...
前華為車BU王軍挂帥加盟,吉利智駕要改寫行業格局? - 天天要聞

前華為車BU王軍挂帥加盟,吉利智駕要改寫行業格局?

溫馨提示:點擊上方藍字關注「汽車行業關注」,或者添加微信公眾號:autoWechat,每日收穫最新最快最熱門的精彩汽車資訊。如果您有好的原創文章或者獨家爆料,請發郵箱[email protected]日前,重慶千里科技股份有限公司發布最新人事任命,前華為智能汽車解決方案業務部(車BU)創始人王軍正式加盟,出任吉利智駕生態-千...
華為化身「價格屠夫」,16GB+512GB突降3500元,鴻蒙OS+衛星通信 - 天天要聞

華為化身「價格屠夫」,16GB+512GB突降3500元,鴻蒙OS+衛星通信

對於那些想要拍出精美照片的小夥伴,絕對是不能吝嗇的,而就一款優質的影像旗艦絕對可以起到事半功倍的效果,當然了,就在如今手機市場之中,那些拍照較好的旗艦機型,在價格層面也均是不便宜的,而對於想要低價格入手影像旗艦的小夥伴,就選對時機還是很有必
6817台新能源車,從深圳首航! - 天天要聞

6817台新能源車,從深圳首航!

7月8日,全球第二大汽車運輸船——比亞迪「深圳號」滾裝船,經寧波舟山港和深圳小漠國際物流港(以下簡稱「小漠港」)「南北接力」裝船,搭載著6817台比亞迪新能源汽車,駛向歐洲。首次通過地跑形式集港實現「出廠即出港」在本次出口的新能源汽車中,1105台首次通過地跑形式集港,從深汕基地工廠抵達小漠港裝船僅需5分鐘,...
賓利中國發文打假:有人冒充總部發布低價銷售方案 - 天天要聞

賓利中國發文打假:有人冒充總部發布低價銷售方案

7月8日,一家名為賓利品彙(廈門)的供應鏈管理有限公司發布聲明稱,近期,公司發現市場上有部分機構或個人假冒「賓利總部」名義,擅自對外發布低價銷售方案,且未向總部報備。此類行為嚴重擾亂市場秩序,損害賓利品牌的聲譽,並侵害消費者及合法授權方的權益。該公司強調,其是英國賓利家族商業管理有限公司在中國大陸地區...
10.05千克算11千克?你寄快遞遭遇過「重量刺客」嗎? - 天天要聞

10.05千克算11千克?你寄快遞遭遇過「重量刺客」嗎?

近日有消費者反映包裹實際稱重為10.05千克計費重量卻按11千克算(圖源:江蘇消保委)江蘇省消費者權益保護委員會表示將快件重量向上取整計算運費的操作,不僅給消費者帶來多付費的感受,更侵害了消費者的公平交易權,廣大消費者要注意「重量刺客」偷襲