Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah saya boleh menggunakan Fungsi ENCODING dengan Gorm untuk Memasukkan dan Memilih Geometri PostGIS?

Bagaimanakah saya boleh menggunakan Fungsi ENCODING dengan Gorm untuk Memasukkan dan Memilih Geometri PostGIS?

DDD
Lepaskan: 2024-11-07 05:20:03
asal
873 orang telah melayarinya

How can I use ENCODING Functions with Gorm to Insert and Select PostGIS Geometry?

Memasukkan dan Memilih Geometri PostGIS dengan Gorm Menggunakan Fungsi PENGEkodan

Dalam mendapatkan dan memasukkan jenis geometri menggunakan Golang dan Gorm, memanfaatkan orb dan geojson fungsi pengekodan perpustakaan menawarkan penyelesaian tanpa memerlukan pembinaan pertanyaan manual.

Menyoal Menggunakan Fungsi Pengekodan

Untuk menanyakan lajur geometri dengan orb, hanya bungkus medan dalam ST_AsBinary fungsi:

rows, err := db.Query("SELECT id, name, ST_AsBinary(geom) FROM orbtest LIMIT 1")
Salin selepas log masuk

Begitu juga, untuk memasukkan ke dalam lajur geometri menggunakan orb, bungkus nilai geometri orb dalam fungsi ST_GeomFromWKB:

db.Exec("INSERT INTO orbtest (id, name, geom) VALUES (, , ST_GeomFromWKB())", 1, "Test", wkb.Value(p))
Salin selepas log masuk

Mengimbas dan Menyimpan Menggunakan Fungsi Pengekodan

Kaedah imbasan dan nilai tersuai boleh dilaksanakan untuk struct Go untuk mengendalikan data geometri yang disimpan dalam format tertentu.

Contohnya, menggunakan perpustakaan pengekodan geojson:

<code class="go">type EWKBGeomPoint geom.Point

func (g *EWKBGeomPoint) Scan(input interface{}) error {
    gt, err := ewkb.Unmarshal(input.([]byte))
    if err != nil {
        return err
    }
    g = gt.(*EWKBGeomPoint)

    return nil
}

func (g EWKBGeomPoint) Value() (driver.Value, error) {
    b := geom.Point(g)
    bp := &b
    ewkbPt := ewkb.Point{Point: bp.SetSRID(4326)}
    return ewkbPt.Value()
}</code>
Salin selepas log masuk

Menyepadukan ke dalam Model Gorm

Struktur itu kemudiannya boleh digunakan sebagai model Gorm, menentukan teg gorm medan geometri untuk menggunakan kaedah imbasan dan nilai tersuai:

<code class="go">type Track struct {
    gorm.Model

    GeometryPoint EWKBGeomPoint `gorm:"column:geom"`
}</code>
Salin selepas log masuk

Penyediaan Jadual Pangkalan Data

Untuk memastikan lajur geometri disimpan dalam format yang sesuai, sesuaikan penciptaan jadual:

<code class="go">err = db.AutoMigrate(Track{}).Error</code>
Salin selepas log masuk

Pendekatan ini mengautomasikan pengendalian penukaran data geometri, membolehkan penyisipan dan pengambilan lancar menggunakan Gorm dan fungsi pengekodan yang ditentukan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan Fungsi ENCODING dengan Gorm untuk Memasukkan dan Memilih Geometri PostGIS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan