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 我用公式推導了下,不算出具體三...