日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

點(diǎn)線面的智慧: 轉(zhuǎn)轉(zhuǎn)JTS技術(shù)如何塑造上門履約地理布局

來源: 責(zé)編: 時(shí)間:2024-07-12 17:27:05 785觀看
導(dǎo)讀1、引言如上圖所示,在轉(zhuǎn)轉(zhuǎn)上門履約的場景中,上門服務(wù)的覆蓋區(qū)域是在地圖上畫電子圍欄來劃定的。這就涉及到一些幾何圖形的操作和空間關(guān)系判斷,其中最核心問題就是要解決如何判斷位置是否在上門覆蓋范圍內(nèi)。下面介紹下 JT

1、引言

圖片ZTD28資訊網(wǎng)——每日最新資訊28at.com

如上圖所示,在轉(zhuǎn)轉(zhuǎn)上門履約的場景中,上門服務(wù)的覆蓋區(qū)域是在地圖上畫電子圍欄來劃定的。這就涉及到一些幾何圖形的操作和空間關(guān)系判斷,其中最核心問題就是要解決如何判斷位置是否在上門覆蓋范圍內(nèi)。下面介紹下 JTS,以及如何通過 JTS 的空間之力來解決這些問題。ZTD28資訊網(wǎng)——每日最新資訊28at.com

2、JTS 介紹

JTS,全稱 Java Topology Suite,是一個(gè)用于創(chuàng)建和操作向量幾何的 Java 庫。提供了對幾何模型的抽象,以及各種空間操作和空間關(guān)系判斷,非常強(qiáng)大。ZTD28資訊網(wǎng)——每日最新資訊28at.com

2.1 引入 jar 包

JTS 有多個(gè)模塊,這里只使用了核心的模塊。ZTD28資訊網(wǎng)——每日最新資訊28at.com

  • jts-core:提供幾何模型的抽象、空間操作、空間關(guān)系判斷算法等
  • jts-io-common:提供各種格式描述幾何模型的輸入輸出包,如對 WKT、WKB 等格式
<dependency>  <groupId>org.locationtech.jts</groupId>  <artifactId>jts-core</artifactId>  <version>1.19.0</version></dependency><dependency>    <groupId>org.locationtech.jts.io</groupId>    <artifactId>jts-io-common</artifactId>    <version>1.19.0</version></dependency>

2.2 基本的幾何模型

JTS 提供了常見的幾何模型抽象,并且各具特點(diǎn)。ZTD28資訊網(wǎng)——每日最新資訊28at.com

模型ZTD28資訊網(wǎng)——每日最新資訊28at.com

定義ZTD28資訊網(wǎng)——每日最新資訊28at.com

常見應(yīng)用ZTD28資訊網(wǎng)——每日最新資訊28at.com

點(diǎn)(Point)ZTD28資訊網(wǎng)——每日最新資訊28at.com

空間中的單個(gè)位置,由一對 x,y 坐標(biāo)表示ZTD28資訊網(wǎng)——每日最新資訊28at.com

興趣點(diǎn)、事件位置等ZTD28資訊網(wǎng)——每日最新資訊28at.com

多點(diǎn)(MultiPoint)ZTD28資訊網(wǎng)——每日最新資訊28at.com

由多個(gè)獨(dú)立的點(diǎn)組成的幾何對象ZTD28資訊網(wǎng)——每日最新資訊28at.com

表示多個(gè)相關(guān)但分散的位置,如連鎖店分布,多個(gè)不同人位置ZTD28資訊網(wǎng)——每日最新資訊28at.com

線(LineString)ZTD28資訊網(wǎng)——每日最新資訊28at.com

由一系列點(diǎn)組成的一維幾何對象,有起點(diǎn)和終點(diǎn),中間可以有任意數(shù)量的點(diǎn)ZTD28資訊網(wǎng)——每日最新資訊28at.com

表示道路、河流等線性特征ZTD28資訊網(wǎng)——每日最新資訊28at.com

多線(MultiLineString)ZTD28資訊網(wǎng)——每日最新資訊28at.com

由多個(gè)不相連的 LineString 組成的幾何對象ZTD28資訊網(wǎng)——每日最新資訊28at.com

表示復(fù)雜的道路網(wǎng)絡(luò)、等高線等ZTD28資訊網(wǎng)——每日最新資訊28at.com

多邊形(Polygon)ZTD28資訊網(wǎng)——每日最新資訊28at.com

由一系列首尾相連的線段圍成的平面區(qū)域(可以有內(nèi)部空洞)ZTD28資訊網(wǎng)——每日最新資訊28at.com

表示行政區(qū)劃、建筑物輪廓等ZTD28資訊網(wǎng)——每日最新資訊28at.com

多多邊形(MultiPolygon)ZTD28資訊網(wǎng)——每日最新資訊28at.com

由多個(gè)獨(dú)立的 Polygon 組成的幾何對象,可以表示不相連的多個(gè)區(qū)域ZTD28資訊網(wǎng)——每日最新資訊28at.com

表示群島、復(fù)雜的行政區(qū)劃ZTD28資訊網(wǎng)——每日最新資訊28at.com

幾何集合(GeometryCollection)ZTD28資訊網(wǎng)——每日最新資訊28at.com

可以包含任意類型幾何對象的集合,最靈活的幾何類型,可以混合包含點(diǎn)、線、面等ZTD28資訊網(wǎng)——每日最新資訊28at.com

表示復(fù)雜的空間場景,如包含多種類型要素的地圖ZTD28資訊網(wǎng)——每日最新資訊28at.com

在 JTS 中的各幾何模型對象關(guān)系如下所示:圖片ZTD28資訊網(wǎng)——每日最新資訊28at.com

在實(shí)際應(yīng)用場景中,最常使用的模型如下:ZTD28資訊網(wǎng)——每日最新資訊28at.com

  • 點(diǎn)(Point):表示位置信息,如用戶地址位置、工程師位置等
  • 多邊形(Polygon)、多多邊形(MultiPolygon):用來表示上門履約的覆蓋區(qū)域

2.3 幾何模型的描述格式

WKT(Well-Know Text)格式是一種文本格式,用于描述二維和三維幾何對象的空間特征。WKT 的基本語法格式如下:ZTD28資訊網(wǎng)——每日最新資訊28at.com

幾何模型類型 (模型數(shù)據(jù))

示例如下所示:ZTD28資訊網(wǎng)——每日最新資訊28at.com

點(diǎn):POINT (282 455)線:LINESTRING (260 250, 485 248, 520 380)多邊形:POLYGON ((320 390, 370 330, 470 360, 460 430, 375 432, 320 390))

JTS 支持對該格式的讀寫操作,主要是兩個(gè)對象WKTReaderWKTWriter,代碼示例如下:ZTD28資訊網(wǎng)——每日最新資訊28at.com

// 讀取wkt描述的幾何對象WKTReader wktReader = new WKTReader();Geometry point = wktReader.read("POINT (282 455)");Geometry line = wktReader.read("LINESTRING (260 250, 485 248, 520 380)");Geometry polygon = wktReader.read("POLYGON ((320 390, 370 330, 470 360, 460 430, 375 432, 320 390))");// 輸出幾何對象的wkt描述WKTWriter wktWriter = new WKTWriter();System.out.println(wktWriter.write(point));System.out.println(wktWriter.write(line));System.out.println(wktWriter.write(polygon));

2.4 空間關(guān)系

JTS 中的空間關(guān)系是基于 DE-9IM(Dimensionally Extended Nine-Intersection Model)模型定義的,這里列舉常見的空間關(guān)系ZTD28資訊網(wǎng)——每日最新資訊28at.com

空間關(guān)系ZTD28資訊網(wǎng)——每日最新資訊28at.com

定義ZTD28資訊網(wǎng)——每日最新資訊28at.com

相等 (Equals)ZTD28資訊網(wǎng)——每日最新資訊28at.com

兩個(gè)幾何對象在拓?fù)渖舷嗟?/span>ZTD28資訊網(wǎng)——每日最新資訊28at.com

相離 (Disjoint)ZTD28資訊網(wǎng)——每日最新資訊28at.com

兩個(gè)幾何對象沒有任何共同點(diǎn)ZTD28資訊網(wǎng)——每日最新資訊28at.com

相交 (Intersects)ZTD28資訊網(wǎng)——每日最新資訊28at.com

兩個(gè)幾何對象有至少一個(gè)共同點(diǎn)ZTD28資訊網(wǎng)——每日最新資訊28at.com

內(nèi)含 (Within)ZTD28資訊網(wǎng)——每日最新資訊28at.com

幾何對象 A 完全位于幾何對象 B 內(nèi)部ZTD28資訊網(wǎng)——每日最新資訊28at.com

包含 (Contains)ZTD28資訊網(wǎng)——每日最新資訊28at.com

幾何對象 A 完全包含幾何對象 BZTD28資訊網(wǎng)——每日最新資訊28at.com

以該圖形為例,兩個(gè)多邊形的關(guān)系判斷的代碼示例圖片ZTD28資訊網(wǎng)——每日最新資訊28at.com

WKTReader wktReader = new WKTReader();Geometry geometryA = wktReader.read("POLYGON ((320 390, 370 330, 470 360, 460 430, 375 432, 320 390))");Geometry geometryB = wktReader.read("POLYGON ((500 420, 430 360, 530 260, 500 420))");System.out.println("Equal: " + geometryA.equals(geometryB));System.out.println("Disjoint: " + geometryA.disjoint(geometryB));System.out.println("Intersects: " + geometryA.intersects(geometryB));System.out.println("Within: " + geometryA.within(geometryB));System.out.println("Contains: " + geometryA.contains(geometryB));

在實(shí)際場景中,判斷上門位置是否在上門區(qū)域內(nèi),轉(zhuǎn)換成空間關(guān)系的判斷就是點(diǎn)是否在多邊形內(nèi)。解決該問題的實(shí)例代碼如下:ZTD28資訊網(wǎng)——每日最新資訊28at.com

WKTReader wktReader = new WKTReader();Geometry geometryA = wktReader.read("POLYGON ((320 390, 370 330, 470 360, 460 430, 375 432, 320 390))");Geometry geometryB = wktReader.read("POLYGON ((500 420, 430 360, 530 260, 500 420))");Geometry point = wktReader.read("POINT (390 380)");System.out.println("point in geometryA: " + geometryA.contains(point));System.out.println("point in geometryB: " + geometryB.contains(point));

2.5 空間操作

JTS 提供了豐富的空間操作功能,用于處理和分析幾何對象。這里列舉常見的幾種ZTD28資訊網(wǎng)——每日最新資訊28at.com

空間操作ZTD28資訊網(wǎng)——每日最新資訊28at.com

定義ZTD28資訊網(wǎng)——每日最新資訊28at.com

相交 (Intersection)ZTD28資訊網(wǎng)——每日最新資訊28at.com

計(jì)算兩個(gè)幾何對象的共同部分ZTD28資訊網(wǎng)——每日最新資訊28at.com

并集 (Union)ZTD28資訊網(wǎng)——每日最新資訊28at.com

合并兩個(gè)或多個(gè)幾何對象ZTD28資訊網(wǎng)——每日最新資訊28at.com

差集 (Difference)ZTD28資訊網(wǎng)——每日最新資訊28at.com

從一個(gè)幾何對象中減去另一個(gè)幾何對象ZTD28資訊網(wǎng)——每日最新資訊28at.com

以該圖為例,操作示例代碼如下:圖片ZTD28資訊網(wǎng)——每日最新資訊28at.com

WKTReader wktReader = new WKTReader();Geometry geometryA = wktReader.read("POLYGON ((320 390, 370 330, 470 360, 460 430, 375 432, 320 390))");Geometry geometryB = wktReader.read("POLYGON ((500 420, 430 360, 530 260, 500 420))");System.out.println("Intersection: " + wktWriter.write(geometryA.intersection(geometryB)));System.out.println("Union: " + wktWriter.write(geometryA.union(geometryB)));System.out.println("Difference: " + wktWriter.write(geometryA.difference(geometryB)));

下面是 Union 合并后的效果圖片ZTD28資訊網(wǎng)——每日最新資訊28at.com

3、快速判斷是否支持上門

在上門履約實(shí)際場景中,需要快速的識別用戶所在位置、地址位置是否在上門服務(wù)的覆蓋區(qū)域內(nèi)。轉(zhuǎn)換成空間關(guān)系的判斷上,也就是點(diǎn)是否在多邊形內(nèi)(PIP,Point-In-Polygon)問題了。ZTD28資訊網(wǎng)——每日最新資訊28at.com

在上述的 JTS 介紹中,已經(jīng)得知 JTS 提供了 contains 的關(guān)系判斷能力。但是這只是解決了單個(gè)問題,假設(shè)全國共有 N 個(gè)多邊形,那么就需要遍歷 N 個(gè)多邊形來判斷,復(fù)雜度是 O(N),并且還需要全部多邊形加載到內(nèi)存中。可想而知,直接使用的話會存在性能問題。為此,我們需要一個(gè)快速解決 PIP 問題的方案。ZTD28資訊網(wǎng)——每日最新資訊28at.com

3.1 最小外接矩形(MBR)

最小外接矩形 MBR (Minimum Bounding Retangle),是能夠完全包含一個(gè)幾何對象的最小矩形。如下圖所示,這個(gè)規(guī)則的矩形就是該多邊形的 MBR 表示。圖片ZTD28資訊網(wǎng)——每日最新資訊28at.com

表示 MBR 非常簡單,只需要知道他的左下角和右上角,那么就可以知道這個(gè) MBR 圖形了。如下圖所示:圖片ZTD28資訊網(wǎng)——每日最新資訊28at.com

知道了這個(gè)最小外接矩形有什么用?可以斷定:如果點(diǎn)不在這個(gè) MBR 內(nèi)了,那么肯定不在這個(gè)多邊形內(nèi)。所以把點(diǎn)和 MBR 進(jìn)行比較,就能夠快速排除不可能有關(guān)系的多邊形對象。ZTD28資訊網(wǎng)——每日最新資訊28at.com

那么如何快速的判斷點(diǎn)是否在 MBR 中?比較坐標(biāo)值的大小就可以了。示例代碼如下:ZTD28資訊網(wǎng)——每日最新資訊28at.com

mbr.getLngMin() <= point.getLng()&& mbr.getLngMax() >= point.getLng()&& mbr.getLatMin() <= point.getLat()&& mbr.getLatMax() >= point.getLat()

綜上,MBR 用簡單的矩形來近似表示復(fù)雜的幾何形狀,將復(fù)雜的空間關(guān)系簡化為矩形之間的關(guān)系。 通過 MBR 這一層的初步篩選,就能夠快速排除不可能有關(guān)系的多邊形對象。ZTD28資訊網(wǎng)——每日最新資訊28at.com

在 JTS 中,Envelope 對象來表示 MBR。代碼示例如下:ZTD28資訊網(wǎng)——每日最新資訊28at.com

WKTReader wktReader = new WKTReader();Geometry geometryA = wktReader.read("POLYGON ((320 390, 370 330, 470 360, 460 430, 375 432, 320 390))");Envelope envelope = geometryA.getEnvelopeInternal();System.out.println(envelope.getMaxX());System.out.println(envelope.getMaxY());System.out.println(envelope.getMinX());System.out.println(envelope.getMinY());

3.2 空間索引

上述構(gòu)建 MBR 可以理解為簡單索引的一種,實(shí)際上有復(fù)雜的空間索引。常見空間索引有ZTD28資訊網(wǎng)——每日最新資訊28at.com

  • R 樹(R-tree):平衡樹,適用于多維空間數(shù)據(jù)(類似一維的 B+樹)
  • 四叉樹(Quad-tree):將二維空間遞歸地分為四個(gè)象限
  • 網(wǎng)格(Grid):將空間劃分為規(guī)則的網(wǎng)格單元

空間索引的基本原理基本類似,采用分割原理,逐級劃分地理空間。舉個(gè)不那么恰當(dāng)?shù)睦樱粋€(gè)自上而下、逐級劃分地理空間的索引定位過程如下:ZTD28資訊網(wǎng)——每日最新資訊28at.com

北方 還是 南方 ? 南方廣東 還是 廣西 ? 廣東深圳 還是 廣州 ? 深圳福田 還是 南山 ? 福田

JTS 提供了四叉樹和 R 樹的實(shí)現(xiàn)ZTD28資訊網(wǎng)——每日最新資訊28at.com

  • Quadtree(四叉樹)
  • STRtree(基于 R 樹的變體)

以這個(gè)圖形為例,使用 JTS 構(gòu)建 R 樹空間索引ZTD28資訊網(wǎng)——每日最新資訊28at.com

圖片ZTD28資訊網(wǎng)——每日最新資訊28at.com

示例代碼如下:ZTD28資訊網(wǎng)——每日最新資訊28at.com

WKTReader wktReader = new WKTReader();Geometry geometryA = wktReader.read("POLYGON ((320 390, 370 330, 470 360, 460 430, 375 432, 320 390))");Geometry geometryB = wktReader.read("POLYGON ((500 420, 430 360, 530 260, 500 420))");STRtree rtree = new STRtree();// 向R樹種添加MBR,和自己的數(shù)據(jù)rtree.insert(geometryA.getEnvelopeInternal(), "Polygon-A");rtree.insert(geometryB.getEnvelopeInternal(), "Polygon-B");rtree.build();// 點(diǎn)只在Polygon-A中System.out.println(rtree.query(wktReader.read("POINT (337 391)").getEnvelopeInternal()));// 點(diǎn)只在Polygon-B中System.out.println(rtree.query(wktReader.read("POINT (496 390)").getEnvelopeInternal()));// 點(diǎn)在Polygon-A和Polygon-B的交集中System.out.println(rtree.query(wktReader.read("POINT (452 367)").getEnvelopeInternal()));

3.3 整體方案流程

綜上所述,快速定位點(diǎn)(Point)在哪些多邊形中的具體流程如下:ZTD28資訊網(wǎng)——每日最新資訊28at.com

  1. 先通過 STRtree 構(gòu)建空間索引
  2. 利用空間索引快速篩選可能包含點(diǎn)的多邊形
  3. 對篩選后的多邊形進(jìn)行精確的空間關(guān)系判斷

多邊形是隨時(shí)都有可能可以調(diào)整,如果一個(gè)多邊形發(fā)生了調(diào)整就需要重構(gòu)整顆索引樹。但是在實(shí)踐中,為了降低構(gòu)建索引樹的頻次,通過定時(shí)任務(wù)去間隔 10 分鐘在內(nèi)存中構(gòu)建一次。并且為了減少索引樹占用的內(nèi)存大小,向索引樹中添加 MBR 關(guān)聯(lián)的是多邊形的 Id,初篩后再根據(jù) id 從緩存中取具體的多邊形數(shù)據(jù)進(jìn)行精確的空間關(guān)系判斷,實(shí)現(xiàn)一個(gè)類似懶加載的過程。ZTD28資訊網(wǎng)——每日最新資訊28at.com

具體流程如下圖所示:圖片ZTD28資訊網(wǎng)——每日最新資訊28at.com

4、幾何圖形的修復(fù)處理

在實(shí)際運(yùn)營過程中,畫的圖形各種形狀,會出現(xiàn)不少異常的情況,如點(diǎn)重疊、邊之間細(xì)微的間隙、自交等問題。實(shí)際操作中還提拱了圖形合并的能力,合并出來的圖像也有可能也是不符合規(guī)范的。為此,需要對這些異常的圖像進(jìn)行修復(fù)。ZTD28資訊網(wǎng)——每日最新資訊28at.com

常見的修復(fù)手段有兩種ZTD28資訊網(wǎng)——每日最新資訊28at.com

  • Buffer 操作:在幾何對象周圍的創(chuàng)建緩沖區(qū),一般用來修復(fù)自相交問題、精度導(dǎo)致的小間隙等
  • Snap 操作:一個(gè)幾何對象的頂點(diǎn)捕捉到另一個(gè)幾何對象的頂點(diǎn)或邊緣,一般用來修復(fù)小的拓?fù)溴e(cuò)誤

這兩種操作也不是萬能,也是需要自己根據(jù)實(shí)際情況進(jìn)行不斷地調(diào)整。ZTD28資訊網(wǎng)——每日最新資訊28at.com

下面來看一個(gè)修復(fù)自交的例子,一個(gè)自交的圖形如下所示:圖片ZTD28資訊網(wǎng)——每日最新資訊28at.com

修復(fù)代碼示例如下:ZTD28資訊網(wǎng)——每日最新資訊28at.com

WKTReader wktReader = new WKTReader();Geometry geometryA = wktReader.read("POLYGON ((340 490, 370 330, 730 350, 700 270, 340 490))");WKTWriter wktWriter = new WKTWriter();wktWriter.setPrecisionModel(new PrecisionModel(0));System.out.println(wktWriter.write(geometryA.buffer(0)));

修復(fù)之后如下圖所示圖片ZTD28資訊網(wǎng)——每日最新資訊28at.com

5、總結(jié)

Java Topology Suite (JTS) 作為一個(gè)功能強(qiáng)大的空間數(shù)據(jù)處理庫,為開發(fā)者提供了豐富的工具來處理復(fù)雜的空間問題。它在許多地理信息系統(tǒng)得到了廣泛的應(yīng)用。這里只是對其的一個(gè)簡單應(yīng)用,后續(xù)還待更深入的挖掘。ZTD28資訊網(wǎng)——每日最新資訊28at.com

6、參考

  • Java Topology Suite (JTS):https://github.com/locationtech/jts
  • OSGeo中國:https://www.osgeo.cn/

本文鏈接:http://m.www897cc.com/showinfo-26-100740-0.html點(diǎn)線面的智慧: 轉(zhuǎn)轉(zhuǎn)JTS技術(shù)如何塑造上門履約地理布局

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 解鎖搜索的力量:關(guān)鍵詞、相似性和語義解釋

下一篇: 2024 最值得關(guān)注的 Rust Web 框架!

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美亚洲一区三区| 亚洲精选久久| 国产女人18毛片水18精品| 国产精自产拍久久久久久| 国产亚洲精品自拍| 亚洲国产精品999| 一区二区三区欧美激情| 午夜精品福利一区二区三区av| 久久精品国产在热久久| 欧美岛国在线观看| 国产精品毛片在线| 伊人蜜桃色噜噜激情综合| 99在线热播精品免费| 亚洲欧美日产图| 美女91精品| 国产精品久久久久av| 极品少妇一区二区三区精品视频| 最新精品在线| 香蕉成人久久| 欧美激情第3页| 国产精品一区二区你懂得| 亚洲国产精品久久久久婷婷884| av成人福利| 久久久久久久一区二区| 欧美日韩一二区| 狠狠干成人综合网| 在线亚洲精品| 免费观看在线综合色| 国产精品你懂的在线欣赏| 亚洲高清在线观看一区| 午夜视频在线观看一区二区| 欧美不卡视频一区发布| 国产农村妇女毛片精品久久麻豆 | 国产精品初高中精品久久| 国产亚洲精品美女| 99国产精品久久久久久久久久 | 欧美日韩综合在线免费观看| 国产日韩精品一区二区| 亚洲另类黄色| 久久视频一区| 国产欧美日韩在线| 99国产精品久久久久老师| 久久免费观看视频| 国产精品日韩专区| 日韩一级免费| 美乳少妇欧美精品| 国产综合久久久久久| 亚洲性av在线| 欧美精品尤物在线| 精品99一区二区三区| 亚洲欧美在线免费| 欧美日韩国产精品一卡| 亚洲大片精品永久免费| 久久av一区二区三区漫画| 国产精品高潮视频| 日韩视频一区二区在线观看 | 国产精品亚洲不卡a| 亚洲乱码国产乱码精品精可以看 | 欧美福利小视频| 在线成人免费观看| 久久xxxx| 国产欧美精品一区aⅴ影院| 中文国产一区| 欧美日韩精品一本二本三本| 亚洲三级色网| 欧美国产乱视频| 亚洲国产综合在线| 狂野欧美激情性xxxx欧美| 国产日韩高清一区二区三区在线| 亚洲一区国产| 国产精品大片免费观看| 在线亚洲国产精品网站| 欧美色图麻豆| 亚洲午夜羞羞片| 国产精品国色综合久久| 亚洲无限av看| 国产精品久久久久久模特 | 欧美国产精品劲爆| 136国产福利精品导航网址| 久久午夜国产精品| 在线观看一区| 美乳少妇欧美精品| 亚洲高清资源综合久久精品| 嫩草伊人久久精品少妇av杨幂| 伊甸园精品99久久久久久| 久久久久久久综合狠狠综合| 狠狠噜噜久久| 蜜臀av一级做a爰片久久 | 欧美资源在线| 好看不卡的中文字幕| 久久理论片午夜琪琪电影网| 尤妮丝一区二区裸体视频| 久久手机免费观看| 在线看一区二区| 欧美激情国产日韩| 艳妇臀荡乳欲伦亚洲一区| 欧美深夜影院| 性久久久久久| 激情欧美一区二区| 在线日本成人| 免费观看日韩av| 日韩视频免费观看| 国产精品国产三级国产专播精品人 | 欧美区一区二区三区| 一区二区欧美在线观看| 国产精品国产一区二区| 欧美中文字幕视频在线观看| 精品成人国产| 欧美极品影院| 亚洲伊人久久综合| 国产又爽又黄的激情精品视频| 久久综合一区二区| 亚洲精选在线观看| 国产精品久久九九| 久久精品夜色噜噜亚洲aⅴ| 亚洲高清成人| 欧美性大战xxxxx久久久| 羞羞答答国产精品www一本| 伊人久久噜噜噜躁狠狠躁| 欧美高清视频在线观看| 亚洲一区二区三区乱码aⅴ| 国产在线日韩| 欧美精品在线视频观看| 亚洲欧美精品一区| 伊人久久噜噜噜躁狠狠躁 | 精品不卡在线| 欧美三级电影网| 欧美中文在线观看| 亚洲欧洲精品一区二区三区不卡 | 亚洲精品久久| 国产精品乱子久久久久| 久久精品九九| 亚洲精品一二| 国产精品一区二区久久久久| 免费在线成人| 亚洲欧美影音先锋| 一区视频在线| 国产精品久久久一本精品| 久久久免费观看视频| 亚洲精品中文字幕在线观看| 国产精品中文字幕欧美| 美女黄色成人网| 这里只有视频精品| 激情亚洲网站| 国产精品高潮粉嫩av| 麻豆精品在线观看| 一区二区三区欧美激情| 国产资源精品在线观看| 欧美日韩在线不卡| 久久久五月天| 国产精品99久久久久久宅男| 国产一区二区三区精品久久久| 欧美国产一区二区三区激情无套| 午夜日韩在线| 亚洲免费观看高清完整版在线观看熊 | 欧美揉bbbbb揉bbbbb| 久久亚洲综合色| 亚洲免费在线视频| 亚洲黄一区二区三区| 国产精品三区www17con| 欧美高清在线精品一区| 亚洲一区二区免费看| 最新亚洲电影| 国产午夜精品久久久| 欧美日韩在线播放三区| 久久九九精品| 亚洲欧美日本另类| 亚洲精品小视频在线观看| 黄色成人在线观看| 国产午夜一区二区三区| 国产精品jvid在线观看蜜臀| 久久免费高清| 午夜精品视频| 亚洲天堂男人| 亚洲区欧美区| 永久555www成人免费| 国产精品影音先锋| 欧美午夜视频| 欧美国产亚洲另类动漫| 久久久97精品| 午夜亚洲福利| 亚洲美女性视频| 91久久国产综合久久| 国产伊人精品| 国产日产精品一区二区三区四区的观看方式 | 国产日韩视频一区二区三区| 国产精品国产三级国产aⅴ入口| 久久综合电影一区| 久久精品视频在线免费观看| 亚洲一区免费视频| 欧美一区三区二区在线观看| 国产精品99久久99久久久二8| 亚洲激情av在线| 亚洲国产精品一区二区第一页 | 欧美一区二区三区在线| 亚洲午夜久久久久久尤物 | 午夜国产精品影院在线观看| 亚洲视频日本| 一区二区国产精品| 日韩亚洲成人av在线| 日韩一级二级三级| 一区二区免费在线观看| 一区二区三区日韩欧美精品| 一区二区日韩伦理片|