ENCODING 함수를 사용하여 Gorm으로 PostGIS 기하학 삽입 및 선택
Golang 및 Gorm을 사용하여 기하학적 유형 검색 및 삽입 시 orb 및 geojson 활용 라이브러리의 인코딩 기능은 수동 쿼리 작성이 필요 없는 솔루션을 제공합니다.
인코딩 함수를 사용하여 쿼리
orb로 도형 열을 쿼리하려면 ST_AsBinary에 필드를 래핑하기만 하면 됩니다. 함수:
rows, err := db.Query("SELECT id, name, ST_AsBinary(geom) FROM orbtest LIMIT 1")
마찬가지로 orb를 사용하여 도형 열에 삽입하려면 ST_GeomFromWKB 함수에 orb 도형 값을 래핑합니다.
db.Exec("INSERT INTO orbtest (id, name, geom) VALUES (, , ST_GeomFromWKB())", 1, "Test", wkb.Value(p))
인코딩 함수를 사용하여 스캔 및 저장
Go 구조체에 대해 사용자 지정 스캔 및 값 메서드를 구현하여 특정 형식으로 저장된 도형 데이터를 처리할 수 있습니다.
예를 들어 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>
Gorm 모델에 통합
그러면 구조체를 Gorm 모델로 사용할 수 있으며, 사용자 정의 스캔 및 값 방법을 사용하도록 기하학 필드의 gorm 태그를 지정합니다.
<code class="go">type Track struct { gorm.Model GeometryPoint EWKBGeomPoint `gorm:"column:geom"` }</code>
데이터베이스 테이블 설정
기하학 열이 적절한 형식으로 저장되도록 하려면 테이블 생성을 사용자 정의하세요.
<code class="go">err = db.AutoMigrate(Track{}).Error</code>
이 접근 방식은 기하학 데이터 변환을 통해 Gorm 및 지정된 인코딩 기능을 사용하여 원활한 삽입 및 검색이 가능합니다.
위 내용은 Gorm과 함께 ENCODING 함수를 사용하여 PostGIS 기하학을 삽입하고 선택하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!