PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

Gorm . के साथ PostGIS ज्यामिति सम्मिलित करना और चुनना

मैंने एक अलग एन्कोडिंग लाइब्रेरी के साथ @ robbieperry22 के उत्तर का उपयोग किया और पाया कि मुझे बाइट्स के साथ बिल्कुल भी छेड़छाड़ करने की आवश्यकता नहीं थी।

संदर्भ के लिए सार शामिल है।

import  "github.com/twpayne/go-geom/encoding/geojson"


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


type Track struct {
    gorm.Model

    GeometryPoint EWKBGeomPoint `gorm:"column:geom"`
}

और फिर टेबल सेट अप/माइग्रेट भाग पर थोड़ा सा अनुकूलन इस्तेमाल किया:

err = db.Exec(`CREATE TABLE IF NOT EXISTS tracks (
    id SERIAL PRIMARY KEY,
    geom geometry(POINT, 4326) NOT NULL
);`).Error
if err != nil {
    return err
}

err = gormigrate.New(db, gormigrate.DefaultOptions, []*gormigrate.Migration{
{
    ID: "init",
    Migrate: func(tx *gorm.DB) error {
        return tx.CreateTable(
            Tables...,
        ).Error
    },
},
{
    ID: "tracks_except_geom",
    Migrate: func(tx *gorm.DB) error {
        return db.AutoMigrate(Track{}).Error
    },
},
}).Migrate()



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres . में एकाधिक फ़ील्ड पर एकत्रित करते समय अनुपलब्ध पंक्तियों को भरें

  2. PostreSQL में DateTimeOffset को कैसे स्टोर करें?

  3. त्रुटि:INTO में या उसके निकट INTO को एक से अधिक बार निर्दिष्ट किया गया

  4. जांचें कि क्या ट्रिगर मौजूद है

  5. नेस्टेड केस को सरल बनाएं जब स्टेटमेंट