Heim > Artikel > Backend-Entwicklung > Wie kann ich ENCODING-Funktionen mit Gorm verwenden, um PostGIS-Geometrie einzufügen und auszuwählen?
Einfügen und Auswählen von PostGIS-Geometrie mit Gorm unter Verwendung von ENCODING-Funktionen
Beim Abrufen und Einfügen geometrischer Typen mit Golang und Gorm unter Nutzung von Orb und Geojson Die Codierungsfunktionen der Bibliotheken bieten eine Lösung, ohne dass eine manuelle Abfrage erforderlich ist Gebäude.
Abfragen mithilfe von Codierungsfunktionen
Um eine Geometriespalte mit Orb abzufragen, schließen Sie das Feld einfach in die ST_AsBinary-Funktion ein:
rows, err := db.Query("SELECT id, name, ST_AsBinary(geom) FROM orbtest LIMIT 1")
Um mit Orb in eine Geometriespalte einzufügen, schließen Sie den Orb-Geometriewert in ST_GeomFromWKB ein Funktion:
db.Exec("INSERT INTO orbtest (id, name, geom) VALUES (, , ST_GeomFromWKB())", 1, "Test", wkb.Value(p))
Scannen und Speichern mithilfe von Kodierungsfunktionen
Benutzerdefinierte Scan- und Wertmethoden können für Go-Strukturen implementiert werden, um in bestimmten Formaten gespeicherte Geometriedaten zu verarbeiten.
Zum Beispiel die Verwendung der Geojson-Kodierung Bibliothek:
<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>
In das Gorm-Modell integrieren
Die Struktur kann dann als Gorm-Modell verwendet werden, indem das Gorm-Tag des Geometriefelds für die Verwendung des benutzerdefinierten Scans angegeben wird und Wertmethoden:
<code class="go">type Track struct { gorm.Model GeometryPoint EWKBGeomPoint `gorm:"column:geom"` }</code>
Datenbanktabelle Einrichtung
Um sicherzustellen, dass die Geometriespalte im richtigen Format gespeichert wird, passen Sie die Tabellenerstellung an:
<code class="go">err = db.AutoMigrate(Track{}).Error</code>
Dieser Ansatz automatisiert die Verarbeitung der Geometriedatenkonvertierung und ermöglicht so ein nahtloses Einfügen und Abruf mit Gorm und den angegebenen Kodierungsfunktionen.
Das obige ist der detaillierte Inhalt vonWie kann ich ENCODING-Funktionen mit Gorm verwenden, um PostGIS-Geometrie einzufügen und auszuwählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!