使用編碼函數透過Gorm 插入和選擇PostGIS 幾何
使用Golang 和Gorm 檢索和插入幾何類型時,利用orb 和ojgeojson庫的編碼函數提供了一種無需手動建立查詢的解決方案。
使用編碼函數進行查詢
要使用orb 查詢幾何列,只需將欄位包裝在ST_AsBinary 中函數:
rows, err := db.Query("SELECT id, name, ST_AsBinary(geom) FROM orbtest LIMIT 1")
類似地,要使用orb 插入幾何列,請將orb 幾何值包裝在ST_GeomFromWKB 函數中:
db.Exec("INSERT INTO orbtest (id, name, geom) VALUES (, , ST_GeomFromWKB())", 1, "Test", wkb.Value(p))
使用編碼函數掃描和儲存
Go 結構體可以實作自訂的scan 和value 方法來處理以特定格式儲存的幾何資料。
例如,使用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>
整合到Gorm 模型
然後該結構體可以用作Gorm 模型,指定幾何欄位的gorm 標籤以使用自訂掃描和值方法:
<code class="go">type Track struct { gorm.Model GeometryPoint EWKBGeomPoint `gorm:"column:geom"` }</code>
資料庫表設定
為了確保幾何列以適當的格式存儲,請自定義表建立:
<code class="go">err = db.AutoMigrate(Track{}).Error</code>
此方法自動處理幾何資料轉換,使用Gorm 和指定的編碼函數實現無縫插入和檢索。
以上是如何使用 Gorm 的 ENCODING 函數來插入和選擇 PostGIS 幾何圖形?的詳細內容。更多資訊請關注PHP中文網其他相關文章!