MongoDB를 사용하여 지형 공간 웹 앱을 만들고 있습니다. 다른 카테고리 (COUNTRY
, STATE
등)가 포함 된 컬렉션에 많은 폴리곤이 있고 어떤 것이 STATE
인지 COUNTRY
인지 알고 싶지만 경우에 따라 이웃의 테두리 인 COUNTRY
이 STATE
그래서 교차로를 질의 할 때 나는 2 개국을 얻는다.다각형 오버랩 비율
주와 양국의 중복 비율을 계산하여 어느 것이 부모인지 파악하고 싶습니다. 나는 찾고 있었지만 이런 종류의 작업으로 어떤 라이브러리도 찾지 못했고 이러한 종류의 알고리즘을 수행하는 것은 좋지 않습니다.
편집 :
func findParent(state *GeoEntity) GeoEntity{
session, err := mgo.Dial("localhost")
check(err)
defer session.Close()
entities := session.DB("geo").C("entity")
query := bson.M{
"geometry": bson.M{
"$geoIntersects": bson.M{
"$geometry": state.Geometry,
},
},
"type": "COUNTRY",
}
var countries []GeoEntity
err = entities.Find(query).All(&countries)
check(err)
var parent GeoEntity
if len(countries) > 1 {
//TODO: parent = findTheTrueParent(countries, state)
} else {
parent = countries[0]
}
return parent
}
: 내가 지금있는이 내가
type GeoEntity struct {
ID bson.ObjectId `json:"id" bson:"_id"`
Type string `json:"type" bson:"type"` // COUNTRY, STATE, etc.
Geometry Geometry `json:"geometry" bson:"geometry"`
}
// GeoJSON entity
type Geometry struct {
Type string `json:"type" bson:"type"`
Coordinates [][][][]float64 `json:"coordinates" bson:"coordinates"`
}
함께 일하고 있어요 모델이며,이 코드의 덩어리 더 상황
추가
And here is an image example of the problem I'm having. 내가 질의를 할 때 나는 두 나라 모두를 얻었고, 빨강과 초록은 하나이지만, 진짜 부모는 초이다. 하나.
golang을위한 지형 공간 라이브러리가 많이 있지만, 데이터를 저장하는 방법이나 지금까지해온 작업을 모른 채이 질문은 너무 일반적입니다. – Andrew
Go를 사용하기 전에 일반 MongoDB 쿼리를 만들려고 했습니까? –
네, 정확하게 말하고있는 것입니다. 몽고 쿼리는 이웃 나라의 경계가 상태와 겹치기 때문에 2 부모를 반환합니다. –