問題:
在GoGIS 中,使用Gorm 插入和擷取Post 幾何幾何由於Gorm 的自動插入和資料掃描,透過Orb 庫的類型帶來了挑戰。簡單地將二進位資料插入幾何列是不夠的,查詢會傳回十六進位結果。
解決方案:
使用 @robbieperry22 答案作為靈感,一種方法不同的編碼庫消除了位元組操作的需要。
<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>
<code class="go">type Track struct { gorm.Model GeometryPoint EWKBGeomPoint `gorm:"column:geom"` }</code>
<code class="go">err = db.Exec(`CREATE TABLE IF NOT EXISTS tracks ( id SERIAL PRIMARY KEY, geom geometry(POINT, 4326) NOT NULL );`).Error if err != nil { return err } // Create table without geom column mig := gormigrate.New(db, gormigrate.DefaultOptions, []*gormigrate.Migration{ { ID: "tracks_except_geom", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(Track{}).Error }, }, } mig.Migrate()</code>
這種方法可以在EWKB 位元組和PostGIS 幾何類型之間無縫轉換,允許插入和選擇幾何圖形,而無需額外的自訂或手動查詢生成。
以上是如何使用 Gorm 和 EWKB 插入和選擇 PostGIS 幾何類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!