Insertion et sélection de géométrie PostGIS avec Gorm à l'aide des fonctions d'ENCODAGE
En récupérant et en insérant des types géométriques à l'aide de Golang et Gorm, en tirant parti de l'orbe et du géojson Les fonctions d'encodage des bibliothèques offrent une solution sans nécessiter la création manuelle de requêtes.
Interrogation à l'aide des fonctions d'encodage
Pour interroger une colonne géométrique avec orb, enveloppez simplement le champ dans ST_AsBinary. function :
rows, err := db.Query("SELECT id, name, ST_AsBinary(geom) FROM orbtest LIMIT 1")
De même, pour insérer dans une colonne géométrique à l'aide d'un orbe, enveloppez la valeur géométrique de l'orbe dans la fonction ST_GeomFromWKB :
db.Exec("INSERT INTO orbtest (id, name, geom) VALUES (, , ST_GeomFromWKB())", 1, "Test", wkb.Value(p))
Numérisation et stockage à l'aide des fonctions d'encodage
Des méthodes d'analyse et de valeur personnalisées peuvent être implémentées pour les structures Go afin de gérer les données géométriques stockées dans des formats spécifiques.
Par exemple, en utilisant la bibliothèque d'encodage de 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>
Intégration dans le modèle Gorm
La structure peut ensuite être utilisée comme modèle Gorm, en spécifiant la balise gorm du champ géométrique pour utiliser les méthodes d'analyse et de valeur personnalisées :
<code class="go">type Track struct { gorm.Model GeometryPoint EWKBGeomPoint `gorm:"column:geom"` }</code>
Configuration de la table de base de données
Pour garantir que la colonne géométrique est stockée dans le format approprié, personnalisez la création de la table :
<code class="go">err = db.AutoMigrate(Track{}).Error</code>
Cette approche automatise la gestion des conversion de données géométriques, permettant une insertion et une récupération transparentes à l'aide de Gorm et des fonctions d'encodage spécifiées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!