MongoDB空間定位(點)與距離檢索

2021-10-24 03:24:45 字數 1234 閱讀 8356

mongodb空間定位(點)與距離檢索

測試資料:

db.mapinfo.insert(})

db.mapinfo.insert(})

db.mapinfo.insert(})

db.mapinfo.insert(})

db.mapinfo.insert(})

db.mapinfo.insert(})

db.mapinfo.insert(})

db.mapinfo.insert(})

一定要加索引

db.mapinfo.ensureindex()

/**mongodb 提供的地圖索引有兩種,分別是 2d 和 2dsphere。

2d 索引通過二維平面記錄點座標,支援在平面幾何中計算距離,而 2dsphere 則支援在球面上進行距離的計算,並且支援 mongodb 的所有地理空間查詢方法。

簡單的理解,2dsphere 是 2d 的增強版。根據官方推薦,如果你的mongodb版本大於2.6

*/檢索規定半徑以內資料(單位為公尺)

, $maxdistance: 5000}}} // 5000公尺以內資料

, $maxdistance: 5000}}} // 5000公尺以內資料

完整的查詢語句

db.mapinfo.find(, $maxdistance: 15000}}})

/**按照離我最近排序,除了使用 $nearsphere 查詢外,我們還可以使用 aggregate 來實現。

使用 aggregate 有兩個好處。1.我們在進行排序的後,可以返回兩點之間的距離。2.我們可以進行更為複雜的排序,例如我們可以先根據某個字段進行排序,然後該欄位相同的情況下再根據距離排序。

使用 aggregate 查詢時,我們還可以返回兩點之間的距離,其中 distancefield 可以對距離字段進行重新命名。

*/db.mapinfo.aggregate([

,distancefield: "distance",

spherical: true,

num: 5,

maxdistance: 15000,

query: }}

},,

])/**如果我們希望查詢以某個點為中心的圓幾公里以內的資料,那你的姿勢可以如下:

地球表面1弧度距離約為6378137公尺, 0.001弧度距離為6378公尺

*/db.mapinfo.find(

}})

3dmath 空間點到直線的距離與距離點

計算這個,我們首先要知道一點向量的基本知識,點乘和叉乘的幾何意義。點乘 求的乙個向量到另乙個向量的投影,結果是乙個數。叉乘 求垂直於2個向量的向量,結果是乙個向量。已知p1,p2 p 求p 到p1 p2上的距離點 px p1到px的距離為 k p p1 p2 p1 normalized px p1 ...

定位與錨點

只能用定位來實現層疊的效果 absolute預設為瀏覽器視窗 position static absolute relative fixed inherit 1.static 預設定位方式 2.absolute 絕對定位,將物件從文件流中完全脫離出來,使用left right top bottom進...

雙目測量空間中兩點距離

論壇的各位大神,我在做雙目測距,重投影矩陣q 空間中一點三維座標為 x1,y1,z1 另外一點三維座標為 x2,y2,z2 測量距離的時候遇到兩個問題問題 1 我用平行光軸模型計算空間兩點距離,算距離的話用q矩陣來做的話使用齊次方程組來解座標還是直接用公式計算好啊 2 我用公式推導了下,不算出具體三...