问题标签 [2dsphere]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
191 浏览

mongodb - mongodb 的 2dsphere 索引在此多边形上失败

我的收藏中已经有很多多边形,但是在这个上创建是不可能的..有人知道为什么吗?

http://geojsonlint.com/说这个多边形没问题... :(

{“类型”:“特征”,“属性”:{“名称”:“Mistelbach”},“几何”:{“类型”:“多边形”,“坐标”:[[[16.404454018255159,48.74046143931465],[16.40433758938687 , 48.740577868182939 ], [ 16.404454018255159, 48.74046143931465 ], [ 16.427856220781329, 48.762233637684766 ], [ 16.434958381746984, 48.765610074865158 ], [ 16.460456303902362, 48.809038042737107 ], [ 16.518670738047067, 48.798210157986198 ], [ 16.533922919792982, 48.810668046893163 ], [ 16.593301642620577, 48.782841547371994 ], [ 16.663741107935671, 48.780978685479361 ], [ 16.6777125721304, 48.766541505811475 ], [ 16.682486155730267, 48.727770692671101 ], [ 16.724051261709587, 48.738132861948856 ], [ 16.760609926352458, 48.716942807920184 ], [ 16.800312170439149, 48.705882065432689 ], [ 16.869470918203056, 48.712402082056897 ], [ 16.879483800875946, 48.723346395676103 ], [ 16.901954572455804, 48.718107096603077 ], [ 16.918021756279739, 48.699594906545066 ], [ 16.911036024182376, 48.680151285540731 ], [ 16.925007488377105, 48.672001264760475 ], [ 16.924425344035658, 48.638819037297992 ], [ 16.904166720953302, 48.640798328058914 ] , [ 16.906611727187379, 48.625662575181288 ], [ 16.859574464398456, 48.634278311434706 ], [ 16.847349433228068, 48.623916142156951 ], [ 16.857013029296091, 48.609595391357352 ], [ 16.811372912926643, 48.615649692508399 ], [ 16.797052162127045, 48.628689725756814 ], [ 16.783895700010341, 48.631716876332341 ], [ 16.779704260751924, 48.635209742381022 ], [ 16.733947715514184, 48.627758294810498], [16.727427698889979, 48.614718261562082], [16.736043435143394, 48.609711820225641], [16.609711820225641]725914123602216, 48.605986096440382 ], [ 16.678178287603558, 48.630552587649447 ], [ 16.677363285525534, 48.629504727834842 ], [ 16.698553339554206, 48.612156826459717 ], [ 16.702744778812622, 48.587124619777498 ], [ 16.679924720627898, 48.56139383988554 ], [ 16.702279063339464, 48.530074474315683 ], [ 16.675267565896323, 48.525417319584108 ], [ 16.664439681145407, 48.522506597876877 ], [ 16.631723169156086, 48.48967365701926 ], [ 16.657221091311463, 48.480825063029265 ], [ 16.637195325965685, 48.465107165810196 ], [ 16.613327407966356, 48.47465433300993 ], [ 16.606458104737282, 48.465107165810196 ], [ 16.5457986643585, 48.465107165810196 ], [ 16.544285089070737, 48.461381442024937 ], [ 16.558023695528888, 48.429363503245348 ] , [ 16.58107661145019, 48.420165622650487 ], [ 16.569666582357829, 48.416672756601798 ], [ 16.596445222064393, 48.390709118973263 ], [ 16.596328793196104, 48.390476261236685 ], [ 16.597725939615575, 48.379997663090634 ], [ 16.641736051828975, 48.354965456408415 ], [ 16.635798179546214, 48.344952573735526 ], [ 16.660830386228437, 48.338316128243029 ], [ 16.602965238688601, 48.314681067980281 ], [ 16.571180157645593, 48.326091097072641 ], [ 16.549058672670604, 48.33191254048711 ] , [ 16.526005756749299, 48.328536103306718 ], [ 16.512034292554571, 48.334473975589475 ], [ 16.498761401569578, 48.34250756750145 ], [ 16.463599883346177, 48.348561868652496 ], [ 16.44310840252724, 48.355198314144992 ], [ 16.441245540634611, 48.368238347393408 ], [ 16.416213333952388, 48.379415518749191 ], [ 16.426808360966724, 48.399906999568124 ], [ 16.421336204157122, 48.408755593558119 ], [ 16.435424097220139, 48.406776302797198 ], [ 16.445436979893028, 48.4243570619089 ]., [432629804381​​193, 48.429712789850214 ], [ 16.445669837629609, 48.433438513635473 ], [ 16.43926624987369, 48.441821392152313 ], [ 16.410275461669627, 48.437513524025604 ], [ 16.407830455435551, 48.449156410854549 ], [ 16.40759759769897, 48.449389268591126 ], [ 16.434841952878692, 48.476284337165978 ], [ 16.438567676663954, 48.499453681955572 ], [ 16.427274076439883, 48.503761550082281 ], [ 16.427972649649618, 48.512260857467403 ], [ 16.427390505308171, 48.512843001808854 ], [ 16.403406158440553, 48.51167871312596 ], [ 16.396303997474899, 48.513541575018593 ], [ 16.415165474137783, 48.53088947639371 ], [ 16.415049045269495, 48.532286622813182 ], [ 16.415049045269495, 48.532635909418055 ], [ 16.365333918509915, 48.549983810793172 ] , [ 16.394906851055428, 48.574433873133948 ], [ 16.377442520812014, 48.574433873133948 ], [ 16.355204606968737, 48.59841822000157 ], [ 16.339719567486245, 48.597370360186964 ], [ 16.340418140695984, 48.576878879368024 ], [ 16.31701593816981, 48.593178920928544 ], [ 16.312242354569946, 48.590384628089602 ], [ 16.308167344179818, 48.567797427641452 ], [ 16.2896551541218, 48.566050994617115 ], [ 16.286977290151142, 48.570009576138951 ], [ 16.287675863360882, 48.590151770353017 ] , [ 16.301880185292188, 48.594226780743149 ], [ 16.300599467741005, 48.608780389279325 ], [ 16.268581528961416, 48.602726088128279 ], [ 16.253212918347216, 48.641264043532068 ], [ 16.262294370073789, 48.643592620897856 ], [ 16.257753644210503, 48.65465336338535 ], [ 16.20140207195843, 48.648133346761149 ], [ 16.199189923460931, 48.656632654146271 ], [ 16.199539210065797, 48.661988382087586], [16.215606393889736, 48.690047739345331], [16.210483523685003, 48.701574197305987], [16.701574197305987].225619276562625, 48.705649207696112 ], [ 16.215955680494606, 48.735804284583068 ], [ 16.223639985801707, 48.740112152709777 ], [ 16.272656539351548, 48.741276441392671 ], [ 16.329939542549937, 48.731263558719782 ], [ 16.34286314693006, 48.74558430951938 ], [ 16.359745332832023, 48.728003550407678 ], [ 16.404454018255159, 48.74046143931465 ] ] ] } }

0 投票
1 回答
890 浏览

mongodb - mongodb $geoIntersects 或 $geoWithin 一个点匹配多个多边形 - 按区域排序?

我有一个 mongo 查询来检查一个点是否在一个多边形内。

目前,我所有的多边形都只是一个层次,一个邻域,而且没有一个重叠。

我想开始将城市、县和国家/地区数据存储在同一个集合中。显然,我可以将 findOne 更改为 find 并适当地修改代码,但是,特别是,我希望结果对匹配项进行排序,因此结果是:[ "Downtown", "San Francisco", "California", "美国”、“北美”]

对我来说,从中构建一个漂亮的字符串是微不足道的。

我还没有设置我的多级多边形,所以我还没有测试过。

我知道 $near 运算符返回到对象的最近点,并且可以排序,但我的假设是,通过阅读文档,由于我的测试点在 polgyon 内,排序顺序将是未定义的,我也运行还有获得附近多边形的风险,然后我必须检查第二个地理相交以确保我们不在其中。

0 投票
0 回答
124 浏览

node.js - Mongoose/MongoDB 地理空间索引不起作用

第一次使用MongoDD。我已经在互联网上搜索了几个小时,试图找出我做错了什么。MongoDB 告诉我执行地理查询后不存在索引。

我已经包括了错误。有任何想法吗?

架构

文件

错误

0 投票
0 回答
776 浏览

mongodb - 无法提取地理键

我尝试在 mongodb 中创建 2dsphere 索引,但出现错误

“无法提取地理键:{ _id: ObjectId('57963b5365ba4df2c13a4965'), loc: { 坐标: [ -180.0, 65.33018130000001 ], 类型: \"Point\" } } 经度/纬度超出范围, lng: - 180 纬度:65.3302"

为什么会这样?

0 投票
1 回答
384 浏览

mongodb - 在 MongoDB 中一起创建地理空间和类型索引?

我想通过使用以下命令来使用来自不同索引类型(2dsphere 和文本)的两个索引:

但我收到以下错误:

"errmsg" : "bad index key pattern { @geolocationable: \"2dsphere\", name: \"text\" }: 一个索引不能使用多个索引插件。"

我阅读了MongoDB 文本和 2D 复合索引 ,但我不确定为什么我不能在一个集合中创建 2dsphere 和文本索引。

我并不是说我想在一个查询中使用两个索引,而我想创建这个索引以便在单独的查询中单独使用它们

0 投票
0 回答
329 浏览

mongodb - 如何使用“MultiPoint”类型进行 $geoWithin 查询?

myCollection我在 MongoDB的集合中有以下文档

我想在边界框中找到坐标我也知道如果坐标类型是“点”我可以用 $box 查询如下:

但是因为我有一个点数组 $box 不支持“MultiPoint”类型。

那么如何使用“MultiPoint”类型进行查询?

另外我不想使用 $geoIntersects 这不是我的回答问题。

0 投票
1 回答
919 浏览

mongodb - Mongodb地理空间索引,2d vs 2dsphere

根据文档,它说关于 2d 索引:

2d 索引支持在平坦的欧几里得平面上进行计算。2d 索引还支持对球体的仅距离计算,但对于球体上的几何计算(例如 $geoWithin),将数据存储为 GeoJSON 对象并使用 2dsphere 索引类型。

没看懂的几件事。。

  1. 我不明白distance-only是什么意思,它是指和弦(通过表面“内部”的线连接两个表面点的线)?
  2. 该计算如何对地球经度和纬度起作用?如果这是为欧几里得空间设计的,它如何用弧度表示距离?
  3. 相反,使用 2dsphere 索引,它可以正确计算两点之间的表面距离,但它可以在不指定 360 经度线和 180 纬度线的情况下工作。它是否专门针对地球经度和纬度进行了编程?
  4. 如果 3. 以上是正确的。是否考虑到地球是扁球体而不是完美的球体?
0 投票
0 回答
78 浏览

mongodb - 地理对象的mongodb插入生成了大量的键

我的日志文件中有很多“插入地理对象生成了大量键”条目,但不确定这是否真的会影响任何性能或其他事情。我知道原因,我有一个非常大的表,其中包含 2dsphere 索引和一个数组。例如:位置:2dsphere 值:[字符串]

索引{'位置':'2dsphere','值':1}

如果“值”获得更多条目,则必须合并所有条目。但是为什么会有这个日志条目呢?拥有“大”索引是否有害?(.. 大约 99% 的只读查询顺便说一句)在这种情况下?

谢谢西蒙

0 投票
1 回答
55 浏览

mongodb - 确定 MongoDB 2dsphere 点之间的路线

我有一种算法,目前从我的数据库中提取几个 2D 球体点(不超过 6 个),这些点都在彼此之间的一定半径内。拉出这些点后,我想以有效的路线对它们进行排序并按此顺序返回它们(当前,当我返回它们时,可以将用户从一个点发送到离它最远的点,即使有途中的点)。是否有使用 MongoDB 2Dsphere 点执行此操作的有效方法?我尝试过的蛮力方法不是很有效:我找到离起点A最近的B点,然后找到离B点最近的C点,以此类推。

0 投票
2 回答
11311 浏览

mongodb - MongoDB $geoNear 聚合管道(使用查询选项和使用 $match 管道操作)给出不同的结果

我使用 $geoNear 作为聚合框架的第一步。我需要根据“标签”字段过滤掉结果,它工作正常,但我看到有两种方法都给出不同的结果。

示例 MongoDB 文档

我已将 2dsphere 索引添加到“位置”键

查询 1

使用 $match 聚合管道操作根据“tag”键过滤掉结果

查询 2

在 $geoNear 聚合操作中使用查询来根据“tag”键过滤结果

分组选项只是获取两个查询返回的文档数。

两个查询返回的 totalDocs 似乎不同。

有人可以解释一下这两个查询之间的区别吗?