Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
DDDasal
2024-11-07 05:20:03834semak imbas

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")

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))

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>

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>

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>

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!

Kenyataan:
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