我正在开发一个地理定位应用程序。这个应用程序在正确索引的MongoDB中保存了大约500K条记录。每行都有自己的纬度和经度记录值。因此,客户端必须从这50万行中恢复200个最近的点。我担心性能。起初我想到将所有记录(纬度/经度信息)保存在缓存管理器或内存数据库中。之后,可以将给定的点(纬度/经度)与缓存中的那些值进行比较。这时我的疑惑产生了。将所有这些记录存储在缓存管理器的ArrayList中,然后将记录的地理位置与ArrayList中的地理位置进行比较以计算距离会好吗?通过这种方法,我防止了MongoDB中的大量查询,另一方面,通过在ArrayList中保留大约500K条记录(地理定
我有一个网站,人们可以在其中查看谷歌地图上的某些地点,这些地点存储有纬度/经度坐标。存储是mongodb。现在,当用户浏览map时,我需要查找现在哪些地点在map的可见部分。我是mongo的新手,但看过空间部分。我的问题现在是进行此查找的有效方法。我是否需要在每次用户浏览map时创建一个ensureIndex,然后我如何查询map可见边界内的所有地点? 最佳答案 根据mongo文档,您可以像这样在边界框内查询box=[[40.73083,-73.99756],[40.741404,-73.988135]]db.places.find
我使用geonear查询已有一段时间了,但我似乎无法弄清楚如何将结果限制在特定半径内。例如,如何在这个查询中将搜索范围限制在20英里以内?Place.near(:coordinates=>location.reverse)#mustreversetheresultingcoordinatesarraybecausemongostoresthembackwards[lng,lat] 最佳答案 南北纬度差的弧度长度,在任何纬度上约为60海里、111公里或69法定英里;您可以阅读更多关于hereinwikipedia的信息或在mongo地
因为我的另一个问题没有成功(HowtoextendpolygonbyacertaindistanceinPHP/Mysql?),我想找到一个更简单的解决方案。我有一个位置表(由lat和lng定义)和一个位置表(存储为几何的多边形)。我需要的是在多边形+一定半径(例如1/4英里)内搜索mysql中的记录。有获取多边形中心点的函数ST_Centroid,但是如何获取中心点到最远点的距离,从而得到圆的外延半径? 最佳答案 圆是扩展多边形最简单的解决方案,但聊胜于无。这是获取多边形最远点的计算。$polygon和$centroid从数据库中
我有一个表格,其中包含带有坐标(纬度、经度)的本地企业我需要获取给定半径内的所有企业,为此,我使用一个查询来动态计算距离selectb.*from`businesses`asbwhere(1.609344*3956*2*ASIN(SQRT(POWER(SIN((lat-b.lat)*pi()/180/2),2)+COS(lat*pi()/180)*COS(b.lat*pi()/180)*POWER(SIN((lng-b.lng)*pi()/180/-2),2))))现在我需要扩大半径,以防该地区的企业太少,所以假设在给定的半径内只有10个企业我需要动态扩展半径直到我得到50
我在一个旅游网站工作,我需要存储游客去过的旅游景点。我需要地点表中的地点是唯一的,以便我可以知道特定地点等的受欢迎程度。我还需要存储所有国家、州、城市,因为我不能依赖用户输入。数据库是MySQL。查看可用于此类位置的数据集,我发现存在跨国家/地区嵌套城市的问题,这些城市可能使用省、州、县等。所以,我的问题是如何设计模式以便我可以存储所有位置。我正在考虑为国家、州、城市和地点制作表格。spots表将包含spot_name、cityId、stateId、countryId和一些具有经度和纬度边界的字段。这样我就可以根据地理位置识别相同的地点。但同样,由于州/省/县等问题,此解决方案将不起作
我想将多边形放入MySQL数据库,然后使用PHP能够查询纬度/经度点是否在多边形内。这里有任何指针。从来没有做过这样的事情。 最佳答案 MySQL使用通常默认安装的扩展来支持空间列和函数。MySQLReferenceforspacialfeaturesHowtouseMySQLSpacialextension 关于php-将Lat/Long空间扩展插入MySQL,我们在StackOverflow上找到一个类似的问题: https://stackoverflow
有两个点A、B,距离为x(距A英里)和y(距B英里)。设从A到B的距离为N。因此,A与B相距N英里。我该如何解决问题:距A(N+x+y)英里的可用点有哪些?我不确定如何更好地解释这一点。我真的不知道如何解决这个问题,我读了FastestWaytoFindDistanceBetweenTwoLat/LongPoints并且我相信给出的解决方案计算了两点之间的距离,并且不知道该解决方案是否可以用于解决我的问题,或者如果可以,如何解决。 最佳答案 如果您正在寻找近似算法,我建议寻找k-means算法或层次聚类,尤其是怪物曲线或空间填充曲线
对于一个房地产网站,我需要实现一个允许搜索文本和距离的搜索机制。当lat和lon记录在单独的列中时,在MySQL表上进行距离计算很容易,但房子往往有LOTtrue/false属性。我需要将所有这些字段存储在数据库中,因为它们需要可编辑,所以我打算使用像|这样的简单表格房屋编号|property|我在其中存储所有为真(设置)的属性。这将使我免于创建一个包含数百列的宽得离谱的表,但搜索该数据库将不太可行。我考虑过在每个房屋的主记录中添加一个类型为text的列,其中包含所有true属性的字段名。然后我会搜索human文本描述和那个文本列,但我觉得这仍然不是最好的方法。我怎样才能以干净的方式解
我有一个地理定位对象的数据库:编号纬度经度我正在查询数据库以获取盒子内的对象:WHERElongitude>=-33.83789ANDlongitude=4.214943ANDlatitude有一个索引:latitude,longitude。是否有更有效的存储/查询数据库的方法?目前,根据框坐标/对象密度,查询时间从0.1秒到超过1秒不等。我知道MySQLSpacialextension,但使用起来似乎有点麻烦,我不知道它是否会更容易/更有效率。其他信息:我还计划在未来执行简单的基于距离的查询(获取指定位置附近的对象)。 最佳答案