为了账号安全,请及时绑定邮箱和手机立即绑定

GoLang Mongo GeoJSON

GoLang Mongo GeoJSON

Go
慕姐4208626 2022-09-05 10:27:29
在Golang中,使用MongoDB,我试图存储GeoJSON对象,同时保留2dsphere索引。我无法声明可以同时处理“点”和“多边形”的通用结构,因为“点”具有坐标字段,而“多边形”具有坐标字段。[]float64[][]float64你对如何声明这样的结构有任何想法吗?
查看完整描述

2 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

您可以尝试在结构和结构中用作字段。我为您的方案创建了一个简单的程序,如下所示:interfacepolygonpoint


package main


import (

    "fmt"

)


type figure struct {

    name        string

    coordinates interface{}

}


func main() {


    Point := figure{"Point", [2]float64{2.0, 7.88}}

    Polygon := figure{"Polygon", [2][2]float64{{2.0, 7.88}, {3.0, 7.88}}}

    fmt.Println(Point)

    fmt.Println(Polygon)


}

输出:


{Point [2 7.88]}

{Polygon [[2 7.88] [3 7.88]]}


查看完整回答
反对 回复 2022-09-05
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

首先,Ghoper的答案是100%正确的。的加入对我帮助很大。对于将来访问此处的任何人,这是我的GeoJson要素集合结构布局,以供参考:Coordinates interface{}


// Feature Collection

type FeatureCollection struct {

    ID       string    `json:"_id,omitempty" bson:"_id,omitempty"`

    Features []Feature `json:"features" bson:"features"`

    Type     string    `json:"type" bson:"type"`

}


// Individual Feature

type Feature struct {

    Type       string     `json:"type" bson:"type"`

    Properties Properties `json:"properties" bson:"properties"`

    Geometry   Geometry   `json:"geometry" bson:"geometry"`

}


// Feature Properties

type Properties struct {

    Name        string `json:"name" bson:"name"`

    Height      uint64 `json:"height" bson:"height"`

    Purchased   bool   `json:"purchased" bson:"purchased"`

    LastUpdated string `json:"last_updated" bson:"last_updated"`

}


// Feature Geometry

type Geometry struct {

    Type        string      `json:"type" bson:"type"`

    Coordinates interface{} `json:"coordinates" bson:"coordinates"`

}


适用于所有 GeoJson 类型 ( 线串、 点、 多边形、 多多边形 )


查看完整回答
反对 回复 2022-09-05
  • 2 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信