2017-10-24 14 views
1

は、ポリゴンにGeoJSONオブジェクトの "スキーマ" 以下の通りです:ポリゴンGeoJSONオブジェクトの座標が配列の配列に格納されるのはなぜですか? <a href="http://docs.mongodb.com/manual/reference/geojson/#polygon" rel="nofollow noreferrer">Official documentation</a>ページで見られるように

db.someCollection.insert({ 
    type: "Polygon", 
    coordinates: [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ] 
}); 

なぜそれが簡単にすることはできません、以下に示すよう:タイプ

db.someCollection.insert({ 
    type: "Polygon", 
    coordinates: [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] 
}); 

私はその理由が倍数 ジオフェンスを格納するかもしれないと仮定します....私は正しいですか?

のような何か:タイプB

db.someCollection.insert({ 
    type: "Polygon", 
    coordinates: [ 
     [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ], 
     [ [ 1 , 1 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 1 , 1 ] ] 
    ] 
}); 

私は私の仮定は$ geoIntersectsようモンゴDB(の機能の一部を使用した後に間違っていると思いますので、この質問が掲載理由そしてタイプであることを "スキーマ" が必要$ geoWithin形式

答えて

3

MongoDBはn個を行いますGeoJSON形式を定義しないでください。その代わりに、それは、標準で定義された:それは述べhttps://tools.ietf.org/html/rfc7946#section-3.1.6:タイプについて

  • 「ポリゴン」、「座標」部材RFC7946

    これはRFCにポリゴンについての関連セクションであります線形リング座標配列の配列でなければならない。

  • これらのリングが複数あるポリゴンの場合、最初は の外部リングでなければならず、その他のものは内部リングでなければなりません。 外輪がサーフェスに拘束され、内輪( の場合)がサーフェス内の穴にバインドされます。線形リングは次のように定義される

  • 線形環は、4つの以上の位置と閉じたLineStringあります。

そして、ラインストリングがhttps://tools.ietf.org/html/rfc7946#section-3.1.4ある:

  • タイプについて "ラインストリング"、 "座標" 部材は、二つ又は 以上の位置のアレイです。

基本的にポリゴンは、ポリゴンの境界を画定する第1のラインストリングと、閉じたラインストリングの系列として定義され、後続のラインストリングは、第一ラインストリングにおける「穴」を定義しています。

このように定義すると、ポリゴンでドーナツ形状を作成することができます。

このタイプの構造は、配列の配列、したがって標準として表現されている場合にのみ可能です。