我有一个包含多边形的json,这些多边形表示一个国家中所有城市(总共78个)的分隔符。例如:
{
"City1":[
[-67.103276,18.513426],
[-67.10339411502086,18.514532657212502],
[-67.093752,18.515757],
[-67.05297606966441,18.512073045833525]
],
"City2":[
[-67.16901339052771,18.472154288860388],
[-67.169016,18.478488],
[-67.138249,18.507776],
[-67.12906260088943,18.510642646697203],
[-67.125655,18.511706]
],
"City3":[
[-66.034932,18.333452],
[-66.03494,18.332214],
[-66.035911,18.328084],
[-66.035731,18.31961],
[-66.036859,18.318627]
],
...
}
polygon = [[-67.103276,18.513426],[-67.10339411502086,18.514532657212502],[-67.093752,18.515757],[-67.05297606966441,18.512073045833525]]
from_date = DateTime.strptime(params[:from_date], '%Y-%m-%d')
from_date = Time.utc(from_date.year, from_date.month, from_date.day)
to_date = DateTime.strptime(params[:to_date], '%Y-%m-%d')
to_date = Time.utc(to_date.year, to_date.month, to_date.day)
@coll = db.collection("points")
recordset = @coll.find(
{
"$and" => [
{ "geometry.coordinates" => {
"$within" => {"$polygon" => polygon}
}},
{ "properties.time" => {
:$gte => from_date,
:$lte => to_date
}}
]
},
:fields => { :_id => false }
)
有没有什么方法可以用一个查询将所有城市的结果分组,或者我必须查询数据库78次才能获得每个城市的计数?
当您想要分组时,需要使用聚合框架。您将需要一个包含两个步骤和可选的第三步的聚合管道:
“geometry.coordines”
和“properties.time”
放在同一个关联数组中)_id=>“$cityname”
(我猜cityname是存储城市名称的字段)和“number_of_points”=>{“$sum”=>1}
。新字段number_of_points将包含每个城市的点数。我希望通过一条线串拆分一个多多边形(代表一个有岛屿的国家),从而将该县一分为二。 此结果是GeometryCollection对象中的一组多边形。如何将结果分组为两个多多边形对象,每个对象都包含各自一半的多边形? 使现代化 问题:确定分裂形状几何的“左”和“右”侧提供了一个很好的解决方案,其中从结果中的每个多边形中提取一个点,看看当与分裂的LineString结合时,它是否形成顺时针或逆时针线串。
我有一个“SpatialPolygons”对象,我想在@hole==FALSE处对多边形进行子集,并创建一个新对象。 使用下面的代码,一次可以预测得到1个多边形(如果@hole==TRUE,则没有),但我无法从对象中分割多个多边形。 我认为我的问题在于我不知道如何“一般”引用第二个列表,即从列表(Polygon)中获取项目,其中@孔==FALSE。将第二个[[]]留空不起作用。 附言:抱歉,没有可
返回顶点的输入数组,并且附有一些其他方法,如下面所描述 polygon.area() 返回此多边形的标定区域。如果顶点是逆时针顺序,面积为正,否则为负。 polygon.centroid() 返回一个表示此多边形的质心的两元素数组。 polygon.clip(subject) 对这个多边形剪切主题多边形。换句话说,返回一个多边形表示这个多边形和主题多边形的交集。假定剪切的多边形是逆时针方向以及凸多
我们是否可以使用符合以下条件的mongodb地理空间查询来查询和获取位置数据? 获取两个框或一般两个多边形之间交集的所有位置。 例如,在下面,我们能在查询输出中只获得那些位于黄色区域内的位置吗?黄色区域实际上是紫色和红色几何对象[多边形]的公共区域?
假设我有两个不相交的多边形组/“岛屿”(想想两个不相邻县的人口普查区)。我的数据可能看起来像这样: 我希望每个岛内的多边形采用表示其组的ID(可以是任意的)。例如,左下角的3个多边形的IslandID为1,右上角的3个多边形的IslandID为2。 我已经开发了一种方法来做到这一点,但我想知道这是否是最好/最有效的方法。我做以下工作: 1) 创建一个几何体等于多多边形一元并集内多边形的地理数据框。
问题内容: 我正在使用MongoDB开发地理空间网络应用程序。我在具有不同类别(,等)的集合上有很多多边形,我想知道哪个是某个多边形,但是在某些情况下,邻居的边界碰到了多边形的边界,所以当我查询十字路口,我有2个国家。 我想计算该州与两个国家之间的重叠百分比,以了解哪个是父级。我一直在寻找,但是我没有找到具有这种操作的任何库,并且我做这种算法不是很好。 编辑:添加更多上下文 这是我正在使用的模型