Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Mongodb:如何检查点是否包含在多边形中?_C#_Mongodb_Geolocation_Geometry - Fatal编程技术网

C# Mongodb:如何检查点是否包含在多边形中?

C# Mongodb:如何检查点是否包含在多边形中?,c#,mongodb,geolocation,geometry,C#,Mongodb,Geolocation,Geometry,我有一个点数组(纬度、经度)中的区域点列表。我已经对这些数组做了索引,现在我想知道一个点是否在多边形内 MongoDB有可能吗? 我已经尝试过这些命令,但没有成功: > polygonA = [ [ 48.780809,2.307129],[ 48.781809,2.300129],[ 48.770809,2.317129]] > db.contours.find({ "rings.ring" : { "$within" : { "$polygon" : polygonA } }

我有一个点数组(纬度、经度)中的区域点列表。我已经对这些数组做了索引,现在我想知道一个点是否在多边形内

MongoDB有可能吗? 我已经尝试过这些命令,但没有成功:

 > polygonA = [ [ 48.780809,2.307129],[ 48.781809,2.300129],[ 48.770809,2.317129]]
 > db.contours.find({ "rings.ring" : { "$within" : { "$polygon" : polygonA } } })

我的数据结构是:

 > db.contours.findOne({},{'rings':0})
 {
         "_id" : ObjectId("50364617d591ac166000c196"),
         "foundfieldname" : "Name",
         "geometrytype" : "geometryPolygon",
         "attributes" : {
                 "Shape" : "Polygon",
                 "Name" : "France",
                 "Type" : "Country",
                 "Country" : "France",
                 "Area" : "1162358716567.45"
         },
         "country" : "France",
 "rings":{
      "ring":[[12.32,43.54],...],
           ...
 }

谢谢

这要求rings.ring是一个点,并且它上面定义了一个地理索引,这里是这样吗

你的问题意味着这实际上是一个多点列表,上面有一个标准索引(多键索引),这是行不通的

如您所见,当您将“loc”搜索为多边形内的一个点时,“loc”字段如下所示(其他有效示例请参见上面的链接):

索引如下:

db.places.ensureIndex({loc:“2d”}

也就是说,一个代表一个点并定义了地理索引的字段。如果你使用这样的字段-你的测试有效吗?

这是一个C#项目吗?你可以访问系统吗。Windows窗体的绘图库?是的,我正在使用一个C#项目连接mongo。我可以访问该库。有使用该库的窗体吗你能做到这一点吗?
 > db.contours.findOne({},{'rings':0})
 {
         "_id" : ObjectId("50364617d591ac166000c196"),
         "foundfieldname" : "Name",
         "geometrytype" : "geometryPolygon",
         "attributes" : {
                 "Shape" : "Polygon",
                 "Name" : "France",
                 "Type" : "Country",
                 "Country" : "France",
                 "Area" : "1162358716567.45"
         },
         "country" : "France",
 "rings":{
      "ring":[[12.32,43.54],...],
           ...
 }
{ loc : [ 50 , 30 ] }