"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso inserir e selecionar os tipos de geometria do pós -GIS com Gorm?

Como posso inserir e selecionar os tipos de geometria do pós -GIS com Gorm?

Postado em 2025-03-23
Navegar:271

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

inserindo e selecionando a geometria dos pós -GOM com Gorm

usando orb e digitalização de valor personalizada e marshalling

inserindo e reto a pós -geometria com gorm com lata com lata gorm. Para resolver esse problema, os usuários podem aproveitar a biblioteca ORB e implementar os métodos Scan () e Value () para converter entre os tipos GO e o formato binário bem conhecido (WKB) esperado pelo Gorm. Aqui está um exemplo:

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

implementando esses métodos em uma estrutura, as funções de varredura e inserção automatizadas de Gorm podem funcionar perfeitamente com os tipos de geometria. Tipo:

err = db.exec (`Criar tabela se não existe trilhas ( Id Chave primária em série, Geometria Geom (Point, 4326) Não nula ); `) .Error se err! = nil { retornar err } err = gormigrate.new (db, gormigrate.defaultOptions, []*gormigrate.migration { { Id: "init", Migrar: func (tx *gorm.db) erro { retornar tx.createTable ( Mesas ..., ).Erro }, }, { ID: "Tracks_except_geom", Migrar: func (tx *gorm.db) erro { Retorne DB.Automigrate (Track {}). Erro }, }, }).Migrar() Esta migração garante que a coluna geometria seja criada antes que o restante da estrutura da tabela seja configurado. { Gorm.model Geometrypoint Ewkbgeompoint `Gorm:" Coluna: geom "` }

Com essa configuração, o Gorm pode inserir e selecionar sem esforço os tipos de geometria do pós -GIS, permitindo o uso contínuo de dados geométricos em aplicativos Go.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3