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!