99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Neo4j導(dǎo)入OSM路網(wǎng)實(shí)現(xiàn)路徑規(guī)劃:圖數(shù)據(jù)庫(kù)與Cypher實(shí)踐

Neo4j導(dǎo)入OSM路網(wǎng)實(shí)現(xiàn)路徑規(guī)劃:圖數(shù)據(jù)庫(kù)與Cypher實(shí)踐 簡(jiǎn)介這是一套將圖數(shù)據(jù)庫(kù)Neo4j與OpenStreetMap地理數(shù)據(jù)結(jié)合、以Java實(shí)現(xiàn)的簡(jiǎn)單路由服務(wù)項(xiàng)目源碼面向需要在地圖類應(yīng)用中集成路線規(guī)劃能力的Java開(kāi)發(fā)者。壓縮包共35個(gè)文件核心為22個(gè)Java源文件附帶3個(gè)OSM示例地圖、1個(gè)PBF數(shù)據(jù)文件以及Gradle構(gòu)建配置、屬性文件和說(shuō)明文檔整體約314KB結(jié)構(gòu)清晰便于直接導(dǎo)入與二次開(kāi)發(fā)。項(xiàng)目展示了從OSM數(shù)據(jù)解析、路網(wǎng)建模到Cypher查詢最短路徑的完整鏈路可作為理解空間數(shù)據(jù)建模與圖數(shù)據(jù)庫(kù)路線的實(shí)踐參考。已有169人學(xué)習(xí)或下載適合對(duì)圖數(shù)據(jù)庫(kù)、地理信息系統(tǒng)或路徑優(yōu)化感興趣的中高級(jí)Java工程師。1. Neo4jOSM 到底是什么與其說(shuō)得繞路不如換成圖遍歷做地圖和導(dǎo)航的都知道傳統(tǒng)路由服務(wù)要么用 PostGIS pgRouting要么自己寫 A*。但你有沒(méi)有想過(guò)一個(gè)問(wèn)題路網(wǎng)本身就是一張圖路口是節(jié)點(diǎn)路段是邊而 Neo4j 天生就是存“節(jié)點(diǎn)和關(guān)系”的數(shù)據(jù)庫(kù)。Neo4jOSM 這個(gè)方向本質(zhì)就是拿 OpenStreetMap 的原始路網(wǎng)數(shù)據(jù)灌進(jìn) Neo4j把“兩點(diǎn)之間怎么走”從最短路徑算法問(wèn)題變成圖數(shù)據(jù)庫(kù)的遍歷查詢問(wèn)題。我第一次接觸這個(gè)方案是被一個(gè)做同城配送的朋友拉去看的他們想在一套圖數(shù)據(jù)庫(kù)里同時(shí)管知識(shí)圖譜和路徑計(jì)算不想為了一個(gè)路由功能單獨(dú)再插一套 pgRouting。當(dāng)時(shí)我的第一反應(yīng)是“圖數(shù)據(jù)庫(kù)做路由肯定慢”但實(shí)際跑完才發(fā)現(xiàn)數(shù)據(jù)量控制在十萬(wàn)級(jí)節(jié)點(diǎn)以內(nèi)時(shí)Cypher 的遍歷效率完全能接受而且開(kāi)發(fā)和排錯(cuò)的成本比傳統(tǒng)方案低得多。這個(gè)方案適合兩類人一類是已經(jīng)在用 Neo4j 做業(yè)務(wù)、需要順帶解決路線計(jì)算的人另一類是想快速做一個(gè)輕量導(dǎo)航原型、又不想碰地理信息系統(tǒng)那套重工具的開(kāi)發(fā)者。2. 為什么路由要選圖數(shù)據(jù)庫(kù)從路網(wǎng)的數(shù)據(jù)模型說(shuō)起2.1 路網(wǎng)不是坐標(biāo)系而是圖結(jié)構(gòu)很多人第一次接觸 OSM 數(shù)據(jù)時(shí)會(huì)下意識(shí)把它當(dāng)成一堆經(jīng)緯度坐標(biāo)。這其實(shí)是最大的誤解。OSM 的原始數(shù)據(jù)模型里只有三類核心元素Node點(diǎn)、Way線、Relation關(guān)系。一段從 A 路口到 B 路口的道路是由一串 Node 組成一條 Way多個(gè) Way 再組合成完整的道路網(wǎng)。這和 Neo4j 的 Label、Relationship 模型有一種天然的對(duì)應(yīng)關(guān)系。我在設(shè)計(jì)這套路由服務(wù)的數(shù)據(jù)模型時(shí)走了兩條路線來(lái)回對(duì)比。第一種方案是把每個(gè) OSM 的 Way 當(dāng)作一條 Neo4j 關(guān)系這條路的所有幾何信息存在關(guān)系的屬性里。第二種方案是節(jié)點(diǎn)對(duì)應(yīng)路口關(guān)系對(duì)應(yīng)路段。最終我選擇了第二種因?yàn)槁酚傻暮诵挠?jì)算單元是“從一個(gè)節(jié)點(diǎn)到另一個(gè)節(jié)點(diǎn)經(jīng)過(guò)哪些關(guān)系”如果 Way 直接作為關(guān)系路口的轉(zhuǎn)彎角度、多條路匯聚的邏輯反而要額外處理。OSM 數(shù)據(jù)里最容易被忽視的是方向性。高速公路是單向的普通街道是雙向的。在 Neo4j 建模時(shí)關(guān)系必須有 Direction 屬性區(qū)分 oneway 和雙向否則后續(xù)算出來(lái)的路線可能帶著你逆行。這不是算法的復(fù)雜度問(wèn)題而是數(shù)據(jù)模型的精準(zhǔn)度問(wèn)題。2.2 圖數(shù)據(jù)庫(kù)的路由優(yōu)勢(shì)一條 Cypher 就夠傳統(tǒng)路由方案的痛點(diǎn)在于最短路徑算法是外部實(shí)現(xiàn)的要么是 GIS 擴(kuò)展的存儲(chǔ)過(guò)程要么是獨(dú)立微服務(wù)。Neo4j 的好處是路徑遍歷是 Cypher 查詢語(yǔ)言的原生能力不需要額外寫算法模塊。拿一個(gè)最基本的需求舉例找從 A 點(diǎn)到 B 點(diǎn)的最短路徑。Cypher 里的 MATCH pshortestPath(...) 可以直接跑通。更重要的是你不用像傳統(tǒng)方案那樣預(yù)先建好拓?fù)潢P(guān)系表圖數(shù)據(jù)庫(kù)的節(jié)點(diǎn)和關(guān)系本身就是拓?fù)?。新增一條道路就是一個(gè)新關(guān)系刪除一條封路就是刪除一個(gè)關(guān)系。對(duì)于“路線需要隨路況實(shí)時(shí)調(diào)整”的場(chǎng)景這種數(shù)據(jù)模型的靈活性是壓倒性的。當(dāng)時(shí)我并用 pgRouting 和 Neo4j 各實(shí)現(xiàn)了一版在數(shù)據(jù)量一致的情況下Neo4j 的啟動(dòng)慢一些但小范圍查詢的熱數(shù)據(jù)會(huì)比關(guān)系型方案更穩(wěn)因?yàn)楸闅v過(guò)程是在內(nèi)存里完成的不需要反復(fù) JOIN 多張表。2.3 用得當(dāng)心不是所有路由需求都適合 Neo4j這是我在朋友圈說(shuō)過(guò)最多的一句話拿 Neo4j 做路由控制好規(guī)模就是利器失控就是災(zāi)難。Neo4j 的遍歷效率會(huì)隨跳數(shù)線性增長(zhǎng)十跳以內(nèi)的路線幾乎秒出但超過(guò)二十跳響應(yīng)時(shí)間開(kāi)始惡化。如果你要做的全國(guó)范圍貨車調(diào)度幾十萬(wàn)甚至上百萬(wàn)個(gè)路網(wǎng)節(jié)點(diǎn)Neo4j 社區(qū)版未必扛得住。適合用 Neo4j 的場(chǎng)景是單城市或區(qū)域性的路網(wǎng)節(jié)點(diǎn)量在十萬(wàn)級(jí)且路由計(jì)算不是核心業(yè)務(wù)的全部壓力。比如門店配送路徑、園區(qū)內(nèi)部導(dǎo)航、景點(diǎn)游覽路線。如果答案是“全國(guó)幾千萬(wàn)個(gè)路口節(jié)點(diǎn)”我建議直接往 pgRouting 或 Valhalla 方向選型。3. 把 OSM 路網(wǎng)灌進(jìn) Neo4j完整導(dǎo)入鏈路與參數(shù)設(shè)置3.1 工作臺(tái)搭建設(shè)置與數(shù)據(jù)準(zhǔn)備我是按這套流程跑的先準(zhǔn)備好環(huán)境。Neo4j 社區(qū)版是必需的版本我推薦 4.x 以上因?yàn)?Cypher 的語(yǔ)義和 APOC 插件的兼容性更穩(wěn)定。另一個(gè)準(zhǔn)備是 OSM 數(shù)據(jù)文件范圍別貪大先用一個(gè)小城市或一個(gè)區(qū)的 .osm.pbf 格式測(cè)試鏈路。我一般不建議直接用 pbf 去解析而是先轉(zhuǎn)成 OSM XML 格式方便肉眼檢查數(shù)據(jù)。用 osmium 工具做這個(gè)轉(zhuǎn)換最省心。wget https://download.geofabrik.de/asia/china-latest.osm.pbf osmium cat china-latest.osm.pbf -o beijing.osm這里的 china-latest.osm.pbf 是整個(gè)國(guó)家的數(shù)據(jù)但我只需要北京范圍所以用 osmium 的邊界過(guò)濾更合理。真正實(shí)操時(shí)我會(huì)加 bbox 參數(shù)只提取目標(biāo)區(qū)域這樣導(dǎo)入 Neo4j 的數(shù)據(jù)量小一個(gè)數(shù)量級(jí)排錯(cuò)也方便。上面的命令只是第一步重點(diǎn)在于后續(xù)的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換解析要自己寫而不是靠現(xiàn)成的導(dǎo)入工具硬灌因?yàn)楝F(xiàn)成工具往往不做拓?fù)淝逑础?.2 自己寫一個(gè) Python 解析器核心代碼與邏輯拆解圖數(shù)據(jù)庫(kù)里做路由最重要的不是導(dǎo)入 OSM 數(shù)據(jù)本身而是構(gòu)建出可導(dǎo)航的拓?fù)洹SM 原始數(shù)據(jù)里一條 Way 有多個(gè) Node這些 Node 可能是純幾何形狀點(diǎn)也可能正好是路口。我的策略是只把路口節(jié)點(diǎn)導(dǎo)入 Neo4j路段作為 Relationship 屬性里的坐標(biāo)串存下來(lái)。這里給一個(gè)能直接跑的解析器骨架import osmium from neo4j import GraphDatabase class RouterWriter(osmium.SimpleHandler): def __init__(self, driver): super().__init__() self.driver driver self.way_nodes {} self.node_coords {} self.turn_rules [] def node(self, n): # 只保留有路口潛力的節(jié)點(diǎn)坐標(biāo)先全部緩存 self.node_coords[n.id] (n.location.lon, n.location.lat) def way(self, w): if highway not in w.tags: return highway_type w.tags[highway] if highway_type not in [motorway, trunk, primary, secondary, tertiary, residential]: return nodes [n.ref for n in w.nodes] oneway w.tags.get(oneway, no) # TODO確定哪些節(jié)點(diǎn)是交叉路口需要與其它 way 求交集 self.way_nodes[w.id] { nodes: nodes, highway: highway_type, oneway: oneway }關(guān)鍵邏輯先在 Python 里保留一份 way 節(jié)點(diǎn)序列緩存再在后續(xù)清洗中過(guò)濾出真實(shí)路口。直接邊讀 OSM 邊寫入 Neo4j 的做法我試過(guò)一次導(dǎo)入中途遇到數(shù)據(jù)異常就得回滾很難排查。所以我把清洗和寫入拆成了兩個(gè)階段第一階段先落盤成 CSV第二階段用 Neo4j 的批量導(dǎo)入命令。這是效率最高、也最容易控制錯(cuò)誤的方式。3.3 Neo4j 導(dǎo)入命令和索引配置解析出路口和路段之后生成兩個(gè) CSV 文件一個(gè) nodes.csv 一個(gè) ways.csv然后直接用 Neo4j 的LOAD CSV或 admin import 寫入。社區(qū)版里最穩(wěn)妥的是逐條執(zhí)行 Cypher 寫入數(shù)據(jù)量小于五萬(wàn)條時(shí)沒(méi)問(wèn)題。// 創(chuàng)建路網(wǎng)節(jié)點(diǎn) LOAD CSV WITH HEADERS FROM file:///nodes.csv AS row CREATE (n:RoadNode { id: toInteger(row.osm_id), lat: toFloat(row.lat), lon: toFloat(row.lon) }); // 創(chuàng)建路段關(guān)系 LOAD CSV WITH HEADERS FROM file:///ways.csv AS row MATCH (a:RoadNode {id: toInteger(row.source)}) MATCH (b:RoadNode {id: toInteger(row.target)}) CREATE (a)-[:ROAD { highway_type: row.highway, distance_m: toFloat(row.distance_m), oneway: row.oneway }]-(b);注意這里的 oneway 屬性一定要在導(dǎo)入時(shí)處理成方向關(guān)系。我踩過(guò)的坑是雙向路段在 OSM 里是一條 Way但如果只在 Cypher 里建一條關(guān)系從 B 到 A 就沒(méi)辦法遍歷。正確做法是在解析器里判斷 oneway如果是雙向就把 source 和 target 互換再建一條反向關(guān)系。索引設(shè)置很關(guān)鍵。路由查詢的第一步是錨定起點(diǎn)和終點(diǎn)節(jié)點(diǎn)如果id屬性沒(méi)有索引neo4j 會(huì)全表掃描這會(huì)讓十萬(wàn)級(jí)節(jié)點(diǎn)的查詢直接卡上十幾秒。我當(dāng)時(shí)是這么下的CREATE INDEX road_node_id IF NOT EXISTS FOR (n:RoadNode) ON (n.id);這個(gè)索引幾乎決定了所有路由查詢的基礎(chǔ)性能務(wù)必最先創(chuàng)建。4. Cypher 里實(shí)現(xiàn)最短路徑三個(gè)查詢方案與參數(shù)調(diào)優(yōu)4.1 最直觀的寫法shortestPath 函數(shù)數(shù)據(jù)導(dǎo)入完成之后最重要的環(huán)節(jié)就是寫路由查詢。先頭最簡(jiǎn)單的版本用 Neo4j 內(nèi)建 shortestPath 方法MATCH (a:RoadNode {id: 12345}), (b:RoadNode {id: 54321}) MATCH p shortestPath((a)-[:ROAD*]-(b)) RETURN p, reduce(s 0.0, r IN relationships(p) | s r.distance_m) AS total_distance這里的[:ROAD*]表示沿任意深度遍歷關(guān)系。shortestPath 內(nèi)部做的是雙向 BFS 的優(yōu)化版在小型路網(wǎng)上會(huì)非常快可問(wèn)題是它默認(rèn)按跳數(shù)最少優(yōu)先不是按路程最短優(yōu)先。如果一條路線經(jīng)過(guò)很多短路段另一條路線只經(jīng)過(guò)兩條長(zhǎng)路段它會(huì)選擇后者。這跟我實(shí)際做配送路由時(shí)的需求正好相反。這是第一個(gè)要調(diào)的點(diǎn)如果只是求“經(jīng)過(guò)路口最少”的路線shortestPath 就夠如果求的是“物理距離最短”需要換方案。4.2 按距離加權(quán)的最短路徑APOC 擴(kuò)展的 DijkstraNeo4j 官方的 APOC 插件庫(kù)提供了一套更靠譜的算法實(shí)現(xiàn)支持帶權(quán)重的 Dijkstra。這是我最常用的路由寫法也是真正能上生產(chǎn)環(huán)境的方式MATCH (a:RoadNode {id: 12345}), (b:RoadNode {id: 54321}) CALL apoc.algo.dijkstra(a, b, ROAD, distance_m) YIELD path, weight RETURN path, weightapoc.algo.dijkstra四個(gè)參數(shù)含義分別是起始節(jié)點(diǎn)、目標(biāo)節(jié)點(diǎn)、關(guān)系類型、權(quán)重屬性。這里的 weight 就是上面導(dǎo)入時(shí)存的 distance_m單位是米。用它跑出來(lái)的結(jié)果是真正按距離算的最短路徑。這個(gè)查詢有兩點(diǎn)值得注意。第一APOC 版本要跟 Neo4j 版本對(duì)應(yīng)我在 Neo4j 4.4 配 APOC 4.4 的 core 包否則會(huì)遇到閃退或函數(shù)找不到的問(wèn)題。第二如果路網(wǎng)關(guān)系里存在 0 權(quán)重或負(fù)權(quán)重Dijkstra 會(huì)直接掛掉甚至死循環(huán)。導(dǎo)入數(shù)據(jù)時(shí)我做了過(guò)濾凡是 distance_m 小于 1 的路段直接丟棄避免這種邊緣情況。4.3 從一個(gè)節(jié)點(diǎn)出發(fā)查詢所有可達(dá)路徑熱詞里有人搜“neo4j查詢從一個(gè)節(jié)點(diǎn)出發(fā)如何查詢多條”這個(gè)恰恰是圖數(shù)據(jù)庫(kù)路由最有優(yōu)勢(shì)的場(chǎng)景。比如配送站要同時(shí)服務(wù)三十個(gè)客戶點(diǎn)傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)要一條條調(diào)接口而 Cypher 只需要一次查詢就可以把所有按距離排序的可達(dá)路徑拉出來(lái)。MATCH (start:RoadNode {id: 12345}) MATCH (target:RoadNode) WHERE target.id IN [54321, 54322, 54323, 54324] CALL apoc.algo.dijkstra(start, target, ROAD, distance_m) YIELD path, weight RETURN target.id, weight, [n IN nodes(path) | n.id] AS node_list ORDER BY weight ASC執(zhí)行計(jì)劃上這種寫法每一次 CALL 都會(huì)觸發(fā)一次單源 Dijkstra所以如果目標(biāo)節(jié)點(diǎn)有幾十上百個(gè)性能會(huì)直線下降。我的優(yōu)化思路是先加一個(gè)粗粒度的距離過(guò)濾比如用 Neo4j 的空間函數(shù)先算節(jié)點(diǎn)間的直線距離過(guò)濾掉三公里外的節(jié)點(diǎn)減少需要跑 Dijkstra 的目標(biāo)數(shù)量。![Note] 可以把這段查詢發(fā)布成自定義存儲(chǔ)過(guò)程因?yàn)?Neo4j 官方寫法對(duì)結(jié)果去重和并行有一定限制存儲(chǔ)過(guò)程能更好地控制資源。5. 路由上線的避坑記錄坐標(biāo)偏移、數(shù)據(jù)漂移與性能問(wèn)題5.1 路線生成后在地圖上位置對(duì)不上這是最詭異的故障。數(shù)據(jù)導(dǎo)入了、查詢通了、路徑也返回了但在前端地圖組件上畫出來(lái)后路線浮在馬路邊的住宅區(qū)里。排查后發(fā)現(xiàn)是坐標(biāo)參考系的鍋?,F(xiàn)象OSM 數(shù)據(jù)默認(rèn)坐標(biāo)系是 WGS84GPS 用的經(jīng)緯度坐標(biāo)而高德或百度地圖在國(guó)內(nèi)使用的是 GCJ-02 加偏坐標(biāo)系。Neo4j 里存的是原始 WGS84前端地圖工具自動(dòng)做了坐標(biāo)系糾偏于是雙重偏移導(dǎo)致路線錯(cuò)位。原因把 OSM 的坐標(biāo)直接當(dāng)成了國(guó)內(nèi)地圖運(yùn)營(yíng)商坐標(biāo)系里的坐標(biāo)來(lái)用。解決要么在解析器里把 WGS84 轉(zhuǎn)成 GCJ-02 再入庫(kù)要么前端關(guān)閉自動(dòng)偏轉(zhuǎn)。我選了前者寫了一個(gè)wgs84_to_gcj02的算法函數(shù)在導(dǎo)入 CSV 前先做一次坐標(biāo)轉(zhuǎn)換這樣后續(xù)所有業(yè)務(wù)邏輯和可視化都保持一致。5.2 一度路口連不上拓?fù)鋽嗔褜?dǎo)致路線查不到又一個(gè)高頻坑。導(dǎo)入完成后路由只返回了一個(gè)起點(diǎn)節(jié)點(diǎn)路徑完全不存在。我單步排查發(fā)現(xiàn)有 37% 的節(jié)點(diǎn)成了“孤島”完全沒(méi)有關(guān)系。原因有三個(gè)。第一OSM 原始數(shù)據(jù)里兩條路在物理上交叉但并沒(méi)有共享同一個(gè)節(jié)點(diǎn) ID這也是數(shù)據(jù)拓?fù)鋽嗔训牡湫驮蛑弧5诙馕鰰r(shí)我把節(jié)點(diǎn)精度過(guò)濾做得太激進(jìn)把一些交叉口誤判成了形狀點(diǎn)丟了。第三一條道路斷開(kāi)兩段時(shí)終點(diǎn)節(jié)點(diǎn) ID 和另一段的起點(diǎn)節(jié)點(diǎn) ID 不一致。解決在導(dǎo)入后的 Neo4j 里寫一次清洗腳本把坐標(biāo)距離小于五米的節(jié)點(diǎn)做合并。具體的條件是把兩個(gè)節(jié)點(diǎn)的經(jīng)緯度做差值小于閾值就用一個(gè)節(jié)點(diǎn)的 ID 統(tǒng)一替換掉關(guān)系里的引用。MATCH (a:RoadNode), (b:RoadNode) WHERE a.id b.id AND abs(a.lat - b.lat) 0.0001 AND abs(a.lon - b.lon) 0.0001 WITH a, b LIMIT 1000 MATCH (a)-[r:ROAD]-(n) MERGE (b)-[r2:ROAD {distance_m: r.distance_m}]-(n) DELETE r這種做法我先限制每批只處理 1000 條因?yàn)榇笈?MATCH 在 WHERE 條件里的計(jì)算開(kāi)銷非常大跑久了容易 OOM。跑一遍可以恢復(fù)大部分?jǐn)嗔淹負(fù)涞珪?huì)出現(xiàn)重復(fù)關(guān)系所以跑完之后還要加 DISTINCT 去重。5.3 Neo4j 沒(méi)按配置文件分配內(nèi)存查詢慢到像假死跑路由查詢時(shí)發(fā)現(xiàn)只要跳數(shù)超過(guò)十五次響應(yīng)時(shí)間從 50ms 暴漲到 10s一度以為是數(shù)據(jù)量問(wèn)題。后來(lái)發(fā)現(xiàn) Neo4j 默認(rèn)的內(nèi)存配置把堆內(nèi)存限制在 512MB。原因Neo4j 的neo4j.conf文件沒(méi)有修改默認(rèn)堆內(nèi)存只有幾百 MB圖遍歷是把節(jié)點(diǎn)加載到堆內(nèi)的內(nèi)存不夠自然開(kāi)始頻繁 GC哪怕數(shù)據(jù)量只有幾萬(wàn)條也卡。解決在neo4j.conf里修改以下配置。注意修改后必須重啟 Neo4j 服務(wù)。server.memory.heap.initial_size2g server.memory.heap.max_size2g server.memory.pagecache.size2g具體大小根據(jù)自己的機(jī)器來(lái)。我一般建議初始堆和最大堆設(shè)成一致避免運(yùn)行中堆自動(dòng)擴(kuò)容帶來(lái)的停頓。這兩項(xiàng)設(shè)成不同值時(shí)Neo4j 會(huì)頻繁執(zhí)行擴(kuò)縮容路由查詢的延遲曲線變得非常難看。5.4 關(guān)系方向設(shè)置錯(cuò)誤路線總讓你掉頭我在測(cè)試一個(gè)環(huán)形路網(wǎng)的導(dǎo)航時(shí)路線算法給出的路徑一直在原地打轉(zhuǎn)或者強(qiáng)制連續(xù)兩次 U 形彎。翻遍代碼最后發(fā)現(xiàn)是把雙向路段的兩個(gè)方向關(guān)系都建了但 oneway 判斷錯(cuò)誤把它當(dāng)成僅單向錄入。OSM 數(shù)據(jù)里oneway標(biāo)簽除了yes和no之外還有一種-1表示逆行車道即單向但方向與 Way 節(jié)點(diǎn)序列相反。我的解析器里一開(kāi)始只判斷了yes把-1當(dāng)成了雙向路段。解決方式很簡(jiǎn)單把 oneway -1 的情況在生成關(guān)系時(shí)交換 source 和 target再調(diào)整 distance_m 并寫回。if oneway -1: source, target target, source這種錯(cuò)誤不太容易靠日志發(fā)現(xiàn)因?yàn)閳D結(jié)構(gòu)上完全沒(méi)有異常但算出的路線就是不合理。所以我在每個(gè)路段關(guān)系上都加了一個(gè)direction屬性存儲(chǔ)車流方向后續(xù)查問(wèn)題時(shí)可以直接用WHERE r.direction backward做過(guò)濾便于排查。6. 進(jìn)階玩法給路由加上多約束條件與速度權(quán)重基礎(chǔ)的路由已經(jīng)能跑通但真實(shí)場(chǎng)景里還需要區(qū)分“最短距離”和“最快時(shí)間”。配送場(chǎng)景更關(guān)心時(shí)間自駕場(chǎng)景更關(guān)心是否走高速步行場(chǎng)景必須排除快速路。這些本質(zhì)是把單一的distance_m權(quán)重屬性變成多維屬性再在查詢時(shí)按場(chǎng)景切換權(quán)重字段。我在關(guān)系上額外保存了speed_kph屬性從 OSM 的maxspeed標(biāo)簽獲取如果沒(méi)有則按高速公路類型賦默認(rèn)值。然后程序里先計(jì)算cost_seconds distance_m / speed_kph * 3.6存成單獨(dú)屬性再用 APOC 的 dijkstra 函數(shù)換成cost_seconds做權(quán)重MATCH (a:RoadNode {id: 12345}), (b:RoadNode {id: 54321}) CALL apoc.algo.dijkstra(a, b, ROAD, cost_seconds) YIELD path, weight RETURN [r IN relationships(path) | r.road_name] AS roads, weight AS total_seconds做法說(shuō)起來(lái)很簡(jiǎn)單真正要踩的坑是maxspeed的解析。OSM 標(biāo)簽里maxspeed30表示限速 30 km/hmaxspeedwalk表示步行速度maxspeednone表示不限速。解析器里必須做一層歸一化否則字符串類型直接轉(zhuǎn) float 時(shí)會(huì)直接報(bào)錯(cuò)整條導(dǎo)入鏈路停掉。我還給自己的服務(wù)加過(guò)一個(gè)實(shí)用功能根據(jù)路由結(jié)果的起點(diǎn)和終點(diǎn)從路段的highway_type屬性過(guò)濾掉不適合當(dāng)前交通模式的關(guān)系類型。騎行時(shí)剔除 motorway步行時(shí)剔除 trunk。把a(bǔ)poc.algo.dijkstra里的關(guān)系類型參數(shù)從ROAD改成動(dòng)態(tài)拼接或直接在關(guān)系創(chuàng)建時(shí)打上access標(biāo)簽組合CALL apoc.algo.dijkstra(a, b, ROAD, cost_seconds) YIELD path, weightROAD的表示只沿關(guān)系方向正向遍歷。這一招對(duì)單行道的處理特別管用可以繞開(kāi)很多逆行的坑。整體把這套服務(wù)從原型到落地做下來(lái)我最深的感受是Neo4j 做路由的優(yōu)勢(shì)不在算法執(zhí)行速度而在工程速度。它讓路線計(jì)算和你原有的圖數(shù)據(jù)模型長(zhǎng)在一起不用在業(yè)務(wù)和非業(yè)務(wù)之間頻繁做語(yǔ)義轉(zhuǎn)譯。這是一個(gè)性價(jià)比很高的方案關(guān)鍵是把數(shù)據(jù)清洗和方向處理做扎實(shí)希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久av电影| 九热视频| 五月丁香伊人网| 99狠狠| 婷婷激情综合| 五月激情网站| 思思热在线视频精品| 激情图片亚洲| 色999五月色| 天天综合网~91| 婷婷色五月丁香六月欧美啪| 久久久99视频| 色婷久| 婷婷五月天a| 欧美日韩99| 久热精彩视频98| 亚洲情欲| 99爱在线免费视频| 激情五月婷婷网| 久久五月天婷婷| 婷婷亚洲丁香五月| 千人斩操逼| 色婷婷五月色| 成人欧美日韩| 婷婷综合色图| 六月婷婷啪啪| 狼人狠狠操| 欧美日韩婷婷五月天| 婷婷六月综合激情| 国产成人综合网| 亚洲婷婷激情综合激情999精品| 99综合99| 婷婷五月天激情AV影院| 丁香五月婷婷综合网| av在线超清中文| 97婷婷狠狠| 久久九九婷婷| 99丁香五月婷| 亚洲色碰| 丁香午月AV中文字幕| 大香蕉精品视频| 97热这里精品在线视频| 久久久久婷婷| 丁香六月AV| 影音先锋按摩| 五月丁香婷婷激情在线| 欧美英丁香开心快乐六月天网| 九九精品片一| 狠狠搞综合色| 久久久久er热| 天堂久久婷婷| 天天干天天操天天爽| www99热| 激情五月综合网| 激情九月婷婷| 国产成人精品亚洲线观看| 五月天激情小说| www.狠狠| 182无码| www.丁香六月婷婷久久天堂影院.con| 九九成年视频| 五月婷婷人人人操| 婷婷欧美色| 激情五月天啪啪视频| 天天做天天爱天天日| www.婷婷| 激情五月视频| 成人免费高清在线播放| 啪啪一区| 俺来也狠狠| 操老逼综合网| 99re视频在线| 超碰99热| 亚洲狠狠狠色婷婷综合激情久久久| 成人精品一区二区三区四区五区| 久婷婷久草| 狠狠另类视频| 激情欧美五月丁香| 99热免| 六月丁香久久| 国产精产国品一二三在观看| 色色欧美色色色| 丁香五月婷婷欧美性爱| 九月av在线| www色婷婷com| 丁香五月花婷婷开心| 色五月开心婷婷| wuyuedingxiang99| 五月情色天| 99久久这里只有精品| 狠狠操天天干| 综合久久99| 黄网在线播放| 97搞在线| 国产人妻操逼| Www,五月天| 丁香五月AV| 久草五月婷婷| 天天久综合网永久入口18| 婷婷丁香五月综合久久| av在线观看网站| 九九热色视频| 《蜘蛛女》梁铮1995| 五月婷婷色五月| 伊人婷婷大香蕉| 色久天| 五月综合色| 久久久天堂国产精品女人| 婷婷5月久久综合网站| 99ri视频在线观看| 色宗合,宗合网| 精久久色| 99精品在线| 久久综合站| 五月开心久久| 五月丁香六月婷婷a v| 五月天狠狠草| A久久| 天海翼中文字幕高| wwwss在线观看| 五月丁香六月婷婷亚洲激情综合| 五月天丁香成人| 婷婷色在线| 99亚洲精品综合在线| 激情亭亭五月| 呦呦视频无码播放| 五月天婷婷基地| 丁香五月天影院| 五月婷婷黄色| 婷婷五月在线视频| 丁香五月婷婷社区| 26uuu国产色| 亚洲这里只有精品| 97人碰人操| 人人叉久| 99热这里是精品| 婷婷五月在线观看| 99在线免费视频| 操丝袜视频影院导航| 亚洲欧美丁香五月天亚洲欧美| 婷婷丁香五月综合| 色娸娸综合网| 亚洲第一精品成人999久久精品| 色五月婷婷av| 五月天三级久久| 五月综合在线婷婷图片| 久久九九色| xxxx五月天色色| 丁香五月天色综合| 激情五月五月婷婷| 亭亭色网| cc精品国产性传播| 丁香六月婷婷操逼网| 大香蕉啪啪| 五月婷婷婷婷网| 能看的AV| 广东99色在线| 操骚货在线| 色色色在线| 噜噜噜噜噜色| 日韩三十六页| 五月丁香六月婷婷婷婷| 国内精品免费一区二区2009| 91人妻视频| www五月| 99ri国产在线| 亚洲综合九九| 性爱动图国产麻豆一区二区三区| 熟女激情五月天| 九九色天堂| 日日夜夜天天爽| 天天日夜夜| 激情综合网丁香| 婷婷久久免费| 日韩在线视频网站| 五月丁香啪啪啪综合网| 91狠狠色丁香婷婷综合久久精品| 久碰视频| www.色五月.com| 欧美综合五月丁香六月婷| 激情丁香五月| 激情综合色婷婷啪啪六月天| 久久久99婷婷久久久久久| 色五月丁香五月婷婷五月成人网| 伊人激情网| 丁香六月天堂| 色五月中文字幕| 国产精品婷婷午夜在线观看| 大香蕉在线观看9| 五月丁香六月香综合激情| 欧美成人精品A片免费一区99| 男人综合网| www.夜夜操| 日日操夜夜爽白洁| 激情AV综合| 色人妻五月| 高清av在线国产| 亚州操人在线视频| 91人人澡人人爽人人看| 热久久99热欧美国产亚洲| 99热青青草| 久久婷婷五月综合激情国产| 亚洲激情在线| 9久热精品在线视频| 色婷婷激情五月天在线观看| 色婷婷四色| 久久思思热| 色色色婷| 欧美搡BBBBB摔BBBBB| 九九热视频精品2| 97超碰婷婷五月天| 久久久人妻| www.91.com黄| 99ER热精品视频| 五月丁香婷婷三级| 91色涩| www.婷婷| 五月丁香六月婷综合成人综合| 欧美97超碰| www.国产色| 国产成人高清| 天天日天天久久青青| 伊人AV五月婷| 丁香婷婷久久| 91n网站cad入口在线观看| 97资源碰碰| 欧美狠狠草| 婷婷狠狠综合网入口| 丁香五月天社区| 91热爆在线| 99热在线观看| 久久98热re| 国产中文亚洲欧美日韩性交| 婷婷色综合中心站| 激情深爱五月天| 五月丁香成人版| 麻豆精品| 激情五月黄色| 色婷婷www| 久热这里只有精品66| 九九色天堂| 免费视频无码| 99九九视频| 五月丁香激情片| 欧美日本99| 五月色影院| 思思久久青草热| 色婷婷免费观看| 欧美性生交XXXXX无码小说| www激情婷婷com| 欧美色图45678| 91狼友视频在线观看| 久热AA| 人妻肉射免费观看| 思思99热这里只有精品| 五月丁香视频色色| 成人在线观看精品| 亚洲九九视频| 久久五月天综合| 五月丁香人人婷婷在线观看| 成人精品在线| 色噜久| 五月综合激情婷婷六月色窝| 女婷久久| 97碰碰在线看视频免费| 婷婷五月丁香综合激情| 色婷婷六月精品| 婷香五月| 91网站黄| 停停五月色宗合| 老师的粉嫩小又紧水又多A片视频 粉嫩AV久久一区二区三区 | 成人精品视频99在线观看免费| 婷婷五月天堂一本在线| 3p日韩网站视频| 久久大香蕉同僚| 五月综合激情网| 色综合久久久久| 91碰在线| 大香线蕉伊人| 丁香五月成人| 国产激情综合五月久久| 婷婷亚洲欧美丁香五月| 综合图区激情| 99这里只有精品8| 色婷婷在线播放| 午夜色丁香| 欧美黄色一级| 色五月天 丁香| 国产欧美精品AAAAAA片| 伊人在线视频| 午夜不卡久久精品无码免费 | 超碰激情五月| 国产91在线视频| 性欧美大战久久久久久久83| 疯狂做受XXXX高潮A片| 六月综合婷婷开心伊人| 五月激情六月宗合| 婷婷成人五月天成人文学| 91九色国产在线| 久久九九国产精品怡红院| 丁香 婷婷 亚洲 熟女| 欧美日韩大黄| 爱草视频在线观看| 激情四射五月天偷偷看婷婷| AV 3P| 成人婷婷桔色| 色宗合久久五月婷婷| 亚洲五月婷婷在线| 99爱免费在线视频| 婷婷色基地| 婷婷五月花西瓜| 色五月首页| 亚洲第一色区| 涩五月婷婷| 成年人最刺激的综合网| 久久婷婷国产| 狠狠操狠狠爱| 乱精品一区字幕二区| 97久久视频| 色色色色色色色色综合网| 五月激情小说网| 五月丁香五月综合欧美| 国精产品一区一区三区免费视频| 曰韩五月丁香色婷婷无码| 色综久久久| 欧洲区自拍| 日韩伊人大香蕉| 91婷婷搞| 五月丁香六月婷婷在线小说视频| 思思热精品在线观看| 91精品综合久久久久久五月丁香| 久9热视频| 亚洲免费看片| 色五月婷婷在线观看第一页舔| WWW嗯嗯啊啊啊啊| 国产成人精品一区二三区熟女在线 | 蜜桃人妻无码AV天堂三区| 亚洲国产精品二二三三区| 国产肥白大熟妇BBBB视频| 99精品偷自拍| 久久精品系列| 九九视频网| 六月婷婷狠狠做| 色女伊人| 开心五月深爱五月| 天天肏天天舔AV| 超碰国产AV| 久久这里精彩免费在线观看| 丁香五月综合在线播放 | 97在线视频 欧美| 9久久久久久久久久久| 玖玖国产视频一区| 五月婷婷激情视频| 青草五月天| 日韩无码AV电影网站| 国产探花一片区| www99精品| 欧美性爱5月天天天看| 久久婷婷五月天蜜桃| 国产激情综合| 麻豆忘忧草午夜| 青青草色在线视频观看| 精品九九视频| 色狠狠综合| 五月丁香色色网| 天天久久九九| 六月丁香成人| 啪啪操超碰| 国产毛片精品一区二区色欲黄A片| 韩国97天堂| 99碰超| 婷婷激情五月综合丁| 人妻久久人妻久久第一区| 99热亚洲| 玖玖色综合网| 天天干夜晚夜操| 99超级碰免费视频| 婷婷五月天激情电影| 色五月天综合| 91热99| 日本性视频| 五月综合视频在线| 超碰色色综合| 97操在线资源| 操一操插一插| 乱岳熟女50岁| 九九色中文| 5月丁香啪啪啪| 99免费视频| 久热AⅤ| 天天激情夜夜干| 五月婷婷深深爱| 97久久婷婷色| 精品怡红九九九| 激情婷婷| 二色AV| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 亚洲乱码日产精品BD| 国产婷婷色五月| 国产密乳av一区二区三区四区| 91久久精品国产91性色TV| 天天操B| 五月天成人在线视频网站| 人妻丰满精品一区二区A片| 九热视频| 色婷婷亚洲婷婷| 91操屁股| 五月婷婷色五月| 日本V在线观看不卡视频网站| 欧美激情五月综合| 日日杆天天| 成人一级片| 狠狠色大香蕉| 久久精品五月天| 丁香五月欧美午夜视频| 婷婷伊人綜合| 五月婷婷六月天| 99啪在线视频| 久久丁香五月天| 日韩一级淫乱片一区二区三区| 五月天 综合 在线| 人妻丰满精品一区二区A片| 久久xx| 激情四射五月天| 人妻激情综合| 色综合激情| 9l视频自拍九色9l视频自拍九色9l社区 | 午夜伊人大香蕉| 色五月丁香婷婷综合| 五月丁香综合激情| 夜夜天天久久婷婷| 日操夜操天天操不卡| A色色| 免费三级黄色| 丁香五月激情啪啪| 国产精品丝| AA丁香综合激情| 加勒比日本一区二区三区| 久久金品黃色| 日韩黄色网络| 婷婷五月六月| 综合久色五月| 伊人大香蕉爱聚| 中文字幕色色色| 婷婷五月综合丁香久久| 中文av网站| 婷婷丁香五月天影院| 99啪99| 大香蕉网站,大香蕉综合| 婷婷五月天成人网| www.久久五月天.com| AA片在线观看视频在线播放| 99青青草| 精品网站:999WWW| 色色婷| 五月天激情小说婷婷| 色色色色丁香| 色五月婷婷综合在线| 色婷婷九月| 色综合久久888| 丁香五月在线视频黑人| 五月丁香综合中文| 婷婷中文字幕| 亚洲bt丁香五月天婷婷激情小说| 五月丁香成人| 成人精品视频99在线观看免费| 开心五月婷婷99| 色婷婷丁香社综合| 欧美激情五月天| 人人人舔人人人操人人人摸人人人97| 久久新| 五月色网| 亚洲色99| 激情99热| 99热销国产这里有精品| 色9999日韩国产| 久草xx性爱视频| 婷婷久久免费| 国产乱子轮XXX农村| 婷婷色色婷婷| 久操热线| 9久久AV| 日韩操人| 久久99热免费最新版| 91操人| 抽插特写| 九九成人| 日亚二欧美| 天天做天天爱天天爽在| 久久久欧美精品sm网站| 国产精品久久久爽爽爽麻豆色哟哟| 思思热精品在线观看| 日韩性视频| 婷婷99狠狠躁天天躁| 久热这里| 亚洲五月天综合| 91久久精品无码一区二区三区| 202丰满熟女妇大| EEUSS鲁片一区二区三区| 婷婷九月激情| 亚洲天堂热| 婷婷丁香五月综合久久| 亚洲中文字幕av| 久久开心五月天激情| 色婷婷婷av| 91人碰| AA片在线观看视频在线播放| 99久在线精品99re8| 六月婷婷七月丁香| 国产精品久久久99视频| 26uuu丁香婷婷五月| 色综合综合综合| 五月综合久久| 日日夜夜天天| 色情五月停停丁香| 逼逼AV| 久久99久久久久久| 91综合在线视频| 色五月综合激情网| 天天日,天天插| 色私五月婷婷| 综合噜噜| 婷婷五月天成人小说| 狠狠五月丁香色婷| 青草青草久热这里只有精品| 台湾无码A片一区二区| 天啪天啪天啪天啪| 欧美十二区| 免费无码毛片一区二区A片| 丁香婷婷五月天激情四射| 日韩欧美一级大黄网站| 五月婷婷在线网站| 五月天色婷婷小说| 日日干夜夜撸夜夜骑| 久久久网站| 玖玖爱资源站| 殴美日韩成人| 五月婷婷天堂| 久久久91| 久久婷婷五月天激情新地址| 五月婷婷激情网| 91肏| 色综合久久88色综合天天99| 99碰网站| 五月丁香久久网| WWW色色色COm| 超碰a女人的天堂| 成人色图情色成人网 www.5b5b5bcom 五月天 | 色婷婷久久综合| 天堂综合久久 | 亚洲国产精品SUV| www.五月天| 人人操五月天| 丁香五月婷婷色| 九九久久精品| 影音先锋美国A| 婷婷视频在线| 中文AⅤ大全| 丁J香六月首页| txt五月激情四射网综合俺也来了| 九九XX视频| 爆乳熟妇一区二区三区四区| 婷婷五月丁香四射| 4399无码视频二区| 99久久婷婷五月综合| 久久婷狠狠色| 人妻久久做| 秋霞三级影视资源| 99视频这里只有久久精品| 天天狠狠色| 五月婷婷欧美激情| 99色精品| 九九Av| 激情五月天婷婷| 日本人妻伦在线中文字幕| 日韩久久日| 中文字幕激情综合| 久操干| 色啪网| 久久亚洲网| 亚洲五月综合色播| 操九色| 另类小说五月天| 大色鬼综合| 9999综合99综合人| 色婷婷网| 人妻尝试久久久久久久久久久久| 丁香成人五月天| 成人在线网| 欧美激情综合| 大香蕉久久婷婷| 中文网AV| 99热在线这里| 综合五月婷婷| 色色六月| 天天噜天天插| 狠狠色综合久久| 激情综合婷婷| 嫩草免费视频| 六月丁香六月婷婷欧美| 天堂婷婷丁香六月网| 99激情视频| 五月婷婷激情| 1234操逼网| 亚洲婷婷丁香五月在线| 26uuu精品国产| 久久精彩免费视频| 日本理论久久| 激情综合网婷婷久久| 五月婷六月| 九九成人| 狠狠色中色| 三级三久久线久久99久目本WW| 色婷婷五月天天天天天天天天天| 婷婷成人五月天| 成人做爰高潮A片免费视频| 五月丁香最新| 婷婷久久六月天| 亚洲视频操| 丁香五月婷婷综合啪啪| www99热| 99在线观看精品视频| 五月天综合在线| 丁香婷婷性久久| 伊人六月丁香婷婷| 成人电影一区| 婷婷久久图片| 色色色色色色97| 超碰国产在线| 99狠狠操一| 深爱婷婷丁香五月激情| 少妇高潮呻吟A片免费看软件 | 人妻操日日| 丁香婷婷激情五月| 婷婷亚洲色| 99碰在线视频| 99热精地址| 欧美性生交XXXXX无码小说| 性视频久久| 天天色,天天日,天天做| www久视频com| 五月天亚洲最大成人| 99热碰碰热| 五月花激情网| 婷婷瑟瑟五月天| 久久九九Com| 天天干天天日天天插| 日韩成人无码人妻| 96精品久久久久久久久| 婷婷五月激情六月| 国产女生爱爱AA| 99色热视频| 国产美女无遮挡裸体毛片A片| a在线观看| 超碰爱爱爱| www:99热视频| 欧美成人A片AAA片在线播放| 狠狠婷婷日韩| 色操b| 日韩乱轮AV| 丁香五月婷婷丫| 九九激情网| 五月婷婷大香蕉| 日本三级中文字幕| 中美月韩免费A片| 99成人| 色综合狠狠色| 五夜丁香| 美女网黄| 99在线观看| 色欲影香| www.五月.com| 色婷婷五月天天天天天| 激情五月综合网| 久久久久婷婷五月热综合| 天天操比比| 婷婷激情丁香五月婷婷激情丁香五月婷婷 | 日韩啪啪视频| 五月天激情国产综合婷婷婷| 99热99思午夜精品| 激情五月婷婷视频一区二区三区| 日日色五月天| 丁香五月大香蕉在线99| 亚洲欧美一区二区三区四区爱爱动图| 97丁香视频| 丁香婷婷色五月激情综合| enecarbon-materials.com污K127封锁请涟系@wip1688 | 第四色婷婷日本| 五月丁香狠狠爱| henhencao国产在线| 国产成人一区二区三区在线观看 | 亚洲五月天色色| 美欧成人视频| 亚洲人妻av| 97碰人人操| 色综合色婷婷色伊人| 国产亚洲精品久久久久久牛牛| 五月婷丁香在线视频在线| 激情综合网激情五月婷婷| 26uuu欧美激情另类| 色玖玖网| 另类视频综合| 日本无va视频| yirenjiqingshiping| 婷婷丁香18| 五月天啪啪视频| 九九碰九九爱97超碰| 婷婷五月丁香五月天| 精品国产a| 91九色丨国产丨爆乳| 久青青久| 色婷婷亚洲综合网站| 99热免费| 99操碰| 婷婷丁香精品视频在线观看| 超碰色综合| 欧美日韩大黄| 99久久色| 天天做天天爱天天高潮| 丁香六月视频免费观看| 成人丁香色| 色婷婷香蕉在线| 狠狠色大香蕉| 天天模,夜夜模夜夜爽| 日韩久久欧亚| 婷婷色五月激情| 色色网站免费| 亚洲美女婷婷五月天| 国产乱妇无乱码大黄AA片| 五月丁香网站| 深爱五月中文字幕| 99丁香五月婷| 日韩一级一片内射视频4K| 日韩在线观看亚洲| 九色视频这里只有精品| av国产精品偷| 色五月丁香五| 婷婷色婷婷| a久久| 综合色五月天| 成人 在线 日韩| 99热超碰人| 中文av网| 99免费在线视频| 一级A片天天操夜夜操| 特黄三级片| 一区操| 大学生高潮无套内谢视频| 久久99热免费最新版| 丁香色播五月天| 7超碰自拍| 亚洲国产成人AV在线| 欧美性生交XXXXX无码小说| 丁香婷婷五月色成人网站| 精品一区二区三区木瓜| 亚洲另类在线观看| 热99在线精品| 亚洲欧洲美女在线观| 成人精品在线| 丁香五月婷婷啪| 神马欧美精| 婷婷五月天日本无码| 成人深爱丁香五月| 99自拍网| 97热九九| 五月丁香最新| 成人精品免费在线观看| 99干日日干| 五月婷婷综合网| 超碰色综合| 婷婷五月天播播| 激情五月,深深爱五月| 六月丁香五月婷婷首页| 精品激情| 色老久久| 亚洲AV免费国产电影| 九久久九精品视频| AA片在线观看视频在线播放| 婷婷性爱| 久久综合五月天| 99热这里只有精品4| 五月丁香六月婷婷网| 日韩狠狠色| 婷婷刺激综合| 影音先锋偷偷色男人站| 婷婷五月天高清无码| 婷婷五月天在婷| 久99久热只有精品国产99| 激情图片婷婷| 色五月婷婷、老熟女| 99在线观看这里都是精品| 91精品久久久久久| 色婷婷久久| 色色综合成人网| 亚洲综合在线伊人婷| 色丁香五月婷婷婷| 日本女天天爽| 第二色AⅤ| 色婷婷精品小视频| 五月熟妇婷婷久久| 奸逼视频| 天天射夜夜骑| 狠狠狠狠狠干| 久久9精品视频| 五月婷婷偷拍| 噜噜色噜噜网| 综合性爱网| 精品99在线看| 色综合综合色| 九九这里只有精品在线视频| 亚洲网视屏| 婷婷激情综合无月| 四色女婷婷| 亚洲无码九九| 激情六月天婷婷| 九九精品热播| 99热精品在线观看| 俺去也五月| 91在线操逼视频| 91操黄| 伊人色五月| 五月婷婷色影院| 久久久人妻久久久| 啪啪婷婷五月天激情| 综合色色婷婷| 韩国激情五月天综合网| 97香蕉久久超级碰碰高清版 | 狠狠色婷婷777| 色www99| 97色色综合| 99日本精品视频热| 丁香五月在线视频| 婷婷伊人久久综合| A久久| 五月丁香综合激情网| 五月激情在线| 日韩精品在线观看9| 色欲影香| 天天天操天天天爰| 亚洲色婷婷五月| 人妻AV在线观看| 亚洲中文字幕在线观看| 久久婷婷激情久久| 日本精品在线噜噜噜| 啪啪啪五月天| 婷婷五月天视频| 五月婷婷啪啪| 黄色录像网点| 少妇高潮一区二区三区99欧美| 亚洲日韩人妻操逼| 性爱视频99| 久热免费| 久久色吧| 久久女人天堂| 五月丁香花婷婷玉莉AV| 亚洲精品亚洲人成人网| 51精品国自产在线| 五月天婷婷綜合院| 婷久看人爽| 99热综合| 真实的国产乱XXXX在线91| 九九热re99re6在线精品| 激情美女五月天| 99在线国| 六月丁香久久| 日韩精品呦呦va| 九九色之九九色之88| 米奇影视资源777狠狠色婷婷五月天激情网 | 久99热| 99爱在线精品视频免费观看| 69天堂99| 丁香色五月直播| 最新五月天婷婷影| 99热97| 激情综合网站| 日韩欧美四五区| 亚洲视频二区| 丁香影院五月综合| 中文无码婷婷| 日本天天色| 玖玖婷婷色欲| 九九热亚洲中文在线观看免费| 色五月天成人| 国产乱子轮XXX农村| 五月亭大香蕉| 激情五月天无人视频在线| 久久婷色| 午夜激情婷婷| 婷婷五月丁香香蕉| 大伊香蕉精品视频在线| 丁香五月综合激情性爱| 丁香六月激情国产| 亚洲狠狠爱婷婷| 久久中文人妻系列| 秋霞AV淫| 婷婷人妻激情| 色婷婷丁香五月天激情综合网| 婷婷基地爱| 久久亚洲无码| 十月色综合| 伊人婷婷五月天| 亚州操逼网| AV国产有码| 婷婷久久五月| 色五月大香蕉| 丁香激情五月| 9 1在线视频| 久久人人妻| 亚洲av综合在线| 色五月天网| 99精品偷自拍| 亚洲 精品 综合 精品| 色五月成人| 91久久1118| 五月激情网站| 日本久久人| 久久人人妻| 一区二区三区四区牛| 五月天成人在线| 成人午夜天| 亚洲 精品 综合 精品| 天天舔天天爽| 久热99| 大香蕉久操| 激情五月天婷婷图| 夜夜爽天天干| 久久精品爱爱| 激情影院丁香五月| 亚洲五月天综合色| 白人荫道BBWBBB大荫道| 亚洲精品乱码久久久久久综合| 五月婷婷在线视频| 五月丁香网视频| www夜夜操| 任你草| 久99久视频| 日日夜夜狠狠婷婷色| 欧美成人va| 亚洲色激婷| 无码人妻AV久久久一区二区三区| 久草xx性爱视频| 婷婷色狠狠| 色色AV色色色东莞| 視频福利乱色| 婷婷五月色综合| 99惹在线精品免费观看| 婷婷五月成人| 丁香婷停五月激情综合深爱| 婷婷丁香91综合| 久久成人人妻| 99热1| 狠狠色色| 久久久久综合激动五月天| 国产乱子轮XXX农村| 天天爱天天做天天爽| 97碰操| 超级碰碰91| 丁香综合婷婷开心激情网| 色综合99| 性色99| 久久月天堂| 婷婷色五月开心五月| 超碰人人操人人干| AV中文在线| 丁香婷婷啪啪啪| 久久91久久精品久久| 五月天成人免费视频| 99热爱爱干干日| 日日爽夜夜爽| 操操操AV| 婷婷五月综合色中文字幕| 五月天婷婷激情小说电影| 色色啊| 超碰无码老师| 超碰91人人操| 日韩好吊操| 97在线干| 久久婷婷视频| www,五月天激情| 丁香五月婷婷五月| 九九色综合九九色| 亚洲国产精品成人va在线观看| 九九美女视频| 26uuu精品一区二区| 五月婷婷乱| 欧美99热| 超碰99热精品在线| 九九九色综合| 影音先锋色色色资源色资源色| 天天日天天肏天天奸| www.久久久久久久| 婷婷五月天在线观看av| 操人视频91| 可以免费观看的av| 精品皮股午夜AV| 66精品国产成人| 在线看AV| 色五月婷婷影院| 婷婷五月天干干| www.99热日韩.com| 久久精彩视频99| 开心激情综合| 人人干人人操人人摸| 玖月婷婷爱丁香| 六月丁香婷婷综合狠狠爱夜夜爱| 四虎国产精品永久在线国在线| 99热综合网| 婷婷五月俺要去| 激情五月婷婷色色| 蜜桃成语时李时珍 免费| 五月丁香婷婷婷激情爱爱| 亚洲第一色网站| 三级毛片7979| 超碰在线观看三级片| 99超级碰免费视频| 狠狠色综合精品视频在线| 成人深爱丁香五月| 婷婷五月天午夜激情影院| 人碰人人人玩91| 久久亚洲婷婷| 天堂色婷婷| 婷婷丁香五月综合激情小说| 99这里有精品免费| 久久久久亚洲AV成人无码电影| 婷婷.com| 国产成人综合网| 五月婷婷啪啪啪| 丁香五月天堂网| 日逼免费视频| 丁香婷婷五月激情综合| 日本视频99| 国产99久9在线| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | yiqicaoav| 精品人妻午夜一区二区三区四区| 激情五月综合亚洲另类| 《战争与艾拉》完整版| 成人五月天在线观看| 激情綜合網址| 婷婷丁香综合在线| 免费视频无码| 69精品人人人人| 中文字幕成人| 欧美日韩成人一区二区| 79色色色色| 天天夜夜六月丁香五月婷婷老师| 同性gv国产精品一区二区| 人人操91| 婷婷久久五月天丁香| 五月丁香综合中文| 99碰在线视频| 草榴视频黄色网| 男人先锋久久| 97色色色色色| 五月天亭亭俺也| 97啪啪| 五月丁香性爱| 91丨九色丨丰满人妖| 亚州操操| 激情综合网五月| 婷婷五月天综合AV| 五月天婷婷7米| 天天日夜夜| 天天综合精品| 狠狠狠狠狠干| 九九视频在线观看| 香焦网五月天| 超碰97干| 武则天精品久久| 9999三级片| 老司机日日夜夜青草| 99综合免费视频| 色婷婷电影| www.久久99| 可以免费观看的AV| 伊人综合网站| 国产露脸150部国语对白| 精品香蕉99久久久久网站| 万月丁香狠狠爱| 99在线视频。| 草久私拍| 五月婷婷黄| 日韩综合网络男女香蕉a片| 久久久婷婷婷| 亚洲综合激情五月天婷婷| 天天色天天爽| 蜜乳国产网站| 99这里只有精品99| 婷婷五月天亚洲| 国产亚洲精品久久一区二区三区| 色综合激情| 久色激情| 熟女人妻视频| 99国产精品久久久久久久久久久| 六月色丁香婷婷| 婷婷香蕉视频| 97色色综合| 欧美色碰| 天天骑日日爽| 97深爱伊人综合| 天天做 天天爱| 99热这里只有精品69| 五月婷婷六月丁香在线| 日韩啪| 五月天婷婷色| YW无码| 婷婷97碰碰| 99免费热在线精品| 五月天婷婷黄色| 色欧美影院| 天天婷婷综合亚洲亚洲| 中文成人在线| 伊人婷婷福利网| 伊人www22综合色| 婷婷色五月综合丁香| 亭亭五月激情亚洲在线| 国产婷婷五月天| 婷婷久久五月天| 亚洲欧美成人在线观看| 丁香五月停停基地| mmm1717.6dbm人人爱人人操| 色婷婷色婷婷五月| 亚洲无线视频| 在线播放成人网站| 天天操天天插天天射| 91成人视频| 激情婷婷丁香色情五月天| 色五月色图| 欧美日韩中文国产一区发布| 97超碰在线观看免费| 久草婷婷| 激情婷婷网| 99人妻碰碰碰久久久久禁片| 最近中文字幕2019视频1| 99久久99久久| 五月激情偷拍婷婷| 99人妻碰碰碰久久久久视| 9色91视频| 99热99精品| 思思re视频在线| 夜夜操天天干| 国产精品久久久久久久久久| 色www.con| 六月丁香射婷婷欧美色图片| 美女激情综合| 色欲AVV| 大香蕉av在线| 殴美综合激情五月天免费视频| 五月婷视频| 五月丁香成年黄色| 女人露出p毛视频www网站| www,超碰| 丁香狠狠干| 91丨九色丨大屁股| 91久久色| 五月丁小婷婷激情四射| 无码se| 猫咪伊人久久| 99A片| 激情五月天在线观看色婷婷| 噜噜操操| 丁香婷婷综合影院| 日日操夜夜操狠狠操| 这里只有精品无码| 1024国产在线| 色性综合| 五月天婷婷丁香社区| 免费视频WWW在线观看网站| 六月丁香激情网| 色天天久婷婷| 久久婷婷色综合| 9色天堂| 亚州欧美国产久精国产99综合视频| 操逼巨乳91| 香蕉影院色| 色色亚洲无码| 色播五月网| 99日精品视频| 天天操狠狠操| 欧美三级巜人妻互换| 丁香六月婷婷综合色| 久久久久婷| 99精品丰满| 99在这里有精品| 桃色五月天| 成人日韩欧美| 99精品在线播放| 色婷另类| 99九九视频| 五月婷婷 婷婷五月 一区二区 久久久| 免费成人va| 色色色色色色色色五月先| 久久人妻超碰一区| 丁香五月亚洲综合| 北京熟妇搡BBBB搡BBBB| 色亚洲无码| 五月天桃色深爱网| 色99网| 99狠狠| 另类专区在线| 伊人网碰碰| 婷婷丁香成人五月天| 五月天色社区| AV中文字幕夜夜操b天天摸bb | 人人操av| 综合欧美五月婷婷| 天天干天天操天天拍| 中文av在线观看| 蜜臀99精品| 大香AV| 美女妹子后射视频网站在线观看| 神马久久五月天| 婷婷婷婷色| 亚洲视频1区| 五月婷婷深深爱| 三级毛片7979| 婷婷天天色| 久久99激情| 色噜噜狠狠色综合网| 操逼五月天| 久99久精品视频| 婷婷综合97| 五月丁香六月综合激情| 久久五月激情综合| 色五月综合网| 日本不卡中文字幕| 久久九色| 五月综合激情图片| 另类婷婷五月天啪帕帕| www.亭亭五月天| 亚洲视频码| 色色五月天丁香| 五月婷婷av| 五月天婷婷基地| 色 五月婷婷基地| 婷婷丁香五月社区亚洲| 99精品大片| 大香蕉网站,大香蕉综合| 超碰久热| 玖玖在线资源视频| 五月婷婷先锋| 开心激情婷婷| 99草视频在线观看| 91精品在线看| 五月天天天操天天爽夜夜操| 色日本颜射| 婷婷伊人网| 婷婷射综合| 国产精品久久久久久久久久| 丁香五月,激情五月,深爱五月| 日本熟女啪啪| 久9视频| 婷婷五月天在线综合导航| 成人做爰高潮A片免费视频| 激情五月天开心总和网| 猫咪伊人久久| 婷婷丁香九月| 亚洲五月天伊人| 99caobi| 亚洲欧美婷婷五月色综合| 色婷婷六月开心中文字| 日韩婷久| 黄网免费看| 日韩AAA| 午夜成人综合| 不卡在线视频|