"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je insérer et sélectionner les types de géométrie postgis avec Gorm?

Comment puis-je insérer et sélectionner les types de géométrie postgis avec Gorm?

Publié le 2025-03-23
Parcourir:159

How can I insert and select PostGIS geometry types with Gorm?

Insertion et sélection de la géométrie Postgis avec Gorm

en utilisant ORB et la valeur de valeur personnalisée et le rassemblement

insertion et rétractation des types de géométrie postgis avec Gorm peuvent être difficiles. Pour résoudre ce problème, les utilisateurs peuvent tirer parti de la bibliothèque ORB et implémenter des méthodes SCAN () et Value () pour convertir entre les types GO et le format binaire bien connu (WKB) attendu par Gorm. Voici un exemple:

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

En implémentant ces méthodes dans une structure, les fonctions de numérisation et d'insertion automatisées de Gorm peuvent fonctionner de manière transparente avec des types de géométrie. type:

err = db.exec (`Créer une table s'il n'existe pas ( Clé primaire en série ID, géométrie géom (point, 4326) pas nul ); `) .Error Si err! = Nil { retourner err } err = gormigrate.new (db, gormigrate.defaultoptions, [] * gormigrate.migration { { ID: "init", Migrer: Func (tx * gorm.db) Erreur { return tx.CreateTable ( Tables ..., ).Erreur }, }, { Id: "tracks_except_geom", Migrer: Func (tx * gorm.db) Erreur { return db.autoMigrate (track {}). Erreur }, }, }).Émigrer() Cette migration garantit que la colonne de géométrie est créée avant la configuration de la structure du reste de la table. gorm.model GeometryPoint EwkbGeOmpoint `Gorm:" Colonne: Geom "` }

Avec cette configuration, Gorm peut insérer et sélectionner sans effort les types de géométrie postgis, permettant une utilisation transparente des données géométriques dans les applications Go.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3