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

科技分類資訊推薦

發布不到2個月,小米玄戒,已拿下安卓手機芯片0.6%的份額 - 天天要聞

發布不到2個月,小米玄戒,已拿下安卓手機芯片0.6%的份額

前段時間,小米發布了玄戒O1芯片,這也是中國大陸首款3nm的手機芯片。雖然這顆芯片被人黑的不要不要的,但說真的,它的表現還是相當不錯的,據大家的評測,他的性能是比高通驍龍8Gen3還要強的,只是沒有基帶芯片,需要外掛基帶才行。
電壓互感器諧振 - 天天要聞

電壓互感器諧振

電壓互感器諧振。電壓互感器諧振,在過去的幾個月里我們收到了幾個不同的問題,關於什麼是VT電路中的鐵磁諧振,它何時發生以及我們如何防止它發生。當電壓互感器的初級在未接地電路中與地線相連時就會發生鐵磁諧振,這種配置導致VT的磁化電抗與系統接地的
中國高鐵營業里程已佔世界七成以上,未來將圍繞多個領域持續攻關 - 天天要聞

中國高鐵營業里程已佔世界七成以上,未來將圍繞多個領域持續攻關

7月8日上午,第十二屆世界高速鐵路大會在北京開幕,這也是繼2010年第七屆世界高速鐵路大會在北京舉辦後,該項世界性大會再次來到北京。1825年,世界上第一條鐵路在英國誕生,而今年正好是世界鐵路誕生200周年。 世界高速鐵路大會由國際鐵路聯盟(UIC)於1992年發起並主辦,每2至3年舉辦一屆,至今已成功舉辦十一屆,成為展...
淘寶閃購日訂單超8000萬,3724個非餐飲品牌訂單翻倍增長,光明增長558% - 天天要聞

淘寶閃購日訂單超8000萬,3724個非餐飲品牌訂單翻倍增長,光明增長558%

7月8日,淘寶閃購、餓了么聯合宣布,淘寶閃購日訂單數超8000萬,其中非餐飲訂單超1300萬,淘寶閃購日活躍用戶超2億。最新數據顯示,有3724個非餐飲品牌訂單數對比淘寶閃購上線之初增長了100%以上,食品、母嬰、個護、家電、酒類、3C數碼等品類訂單也增長超過100%。淘寶閃購7月2日啟動500億補貼計劃,社會消費熱情被極大點燃...
腦機接口新進展,將如何改變我們的生活? - 天天要聞

腦機接口新進展,將如何改變我們的生活?

大家有沒有想過,未來有一天我們不用說話,只用大腦就能和外界交流;不用動手,僅憑意念就能操控各種設備。這可不是科幻電影里的情節,隨着腦機接口技術的不斷發展,這些場景正一步步走向現實。腦機接口,簡單來說,就是在大腦和外部設備之間建立直接的連接通
谷歌 Pixel 10 系列 4 款機型顏色和存儲陣容曝光 - 天天要聞

谷歌 Pixel 10 系列 4 款機型顏色和存儲陣容曝光

IT之家 7 月 8 日消息,科技媒體 Droid-life 昨日(7 月 7 日)發布博文,報道稱從分銷商處獲悉,谷歌 Pixel 10 系列手機將從 128GB 存儲起步,並透露了顏色和存儲陣容。IT之家援引博文介紹,附上谷歌 Pixel 10 系列四款機型的存儲和顏色陣容如下:Pixel 10:曜石黑(Obsidian):128G / 256GB霜(F
羅馬仕一充電寶突然爆炸:不是召回型號 - 天天要聞

羅馬仕一充電寶突然爆炸:不是召回型號

7月8日,據媒體報道,昨日有網友發布一段辦公室監控視頻稱,其同事去年買的羅馬仕充電寶在辦公室充電時又爆炸了,並且還不是召回型號。 據此前報道,羅馬仕於6月16日宣布,召回2023年6月5日....
vivo Y04e配置曝光:天璣T612處理器+5500mAh電池 - 天天要聞

vivo Y04e配置曝光:天璣T612處理器+5500mAh電池

【CNMO科技消息】近日,有外媒報道,還未發布的vivo Y04e的身影出現在Google Play控制台的數據庫中,一同出現的還有Y04e的性能信息。vivo Y04e根據Google Play控制台披露的信息,vivo Y04e搭載了紫