日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ogr 缓冲区_OGR 数据模型

發(fā)布時(shí)間:2023/12/15 编程问答 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ogr 缓冲区_OGR 数据模型 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2013年10月10日

2015年3月30日修正坐標(biāo)參考模型

1 ?OGR幾何對(duì)象模型OGRGeometry

1.1 Geometry

幾何圖形,最基本的地圖圖形。注意:包含空間參考。

其它所有的地圖圖形都是由本類派生出來(lái)的。

包含了通用的屬性和方法。

注意:空間操作的部分需要GEOS支持,如果沒(méi)有GEOS,則返回FALSE。

1.1.1 幾何屬性

getGeometryType():獲取幾何類型。

getGeometryName():獲取幾何對(duì)象的名稱。

1.1.2 維度操作

getDimension():獲取圖形維度。

getCoordinateDimension():獲取坐標(biāo)系統(tǒng)維度。

setCoordinateDimension():設(shè)置坐標(biāo)系統(tǒng)維度。

flattenTo2D():將3D圖形轉(zhuǎn)換為2D(Z值全部設(shè)置為0)。

1.1.3 整體形狀操作

isEmpty():判斷空形狀。

isSimple():判斷簡(jiǎn)單形狀。

isValid():判斷有效性。

isRing():判斷是否為環(huán)。如果沒(méi)有點(diǎn),返回TRUE;否則返回FALSE。

empty():置空?qǐng)D形。

clone():復(fù)制圖形。

getEnvelop():獲取外接矩形。

getBoundary():

closeRings():強(qiáng)制封閉環(huán)。

segmentize():線段分化,將長(zhǎng)線段分為短線段。

swapXY():交換XY。

1.1.4 導(dǎo)入導(dǎo)出

wkbSize():計(jì)算WKB格式所需要的字節(jié)數(shù)。

importFromWkb():導(dǎo)入WKB。

exportToWkb():導(dǎo)出為WKB。

importFromWkt():導(dǎo)入WKT。

exportToWkt():導(dǎo)出為WKT。

dumpReadable():將WKT格式寫入指定文件。

exportToGML():導(dǎo)出為GML。

exportToKML():導(dǎo)出為KML。

exportToJson():導(dǎo)出為JSON。

exportToGEOS():導(dǎo)出為GEOS格式。

1.1.5 空間參考

assignSpatialReference():設(shè)置空間參考。

getSpatialReference():獲取空間參考。

transform():轉(zhuǎn)換空間參考,指定轉(zhuǎn)換參數(shù)。

transformTo():轉(zhuǎn)換空間參考,轉(zhuǎn)換為新的空間參考,需要原有空間參考。

1.1.6 空間分析

1.1.6.1? 判斷空間關(guān)系

Intersects():判斷相交。

Intersect():與Intersects()相同。

Equals():判斷相同。

Equal():與Equals()相同。

Disjoint():判斷不相交。

Touchs():判斷邊界相交。

Crosses():判斷通過(guò)性。

Within():判斷是否在內(nèi)部。與Contains相反。

Contains():判斷包含。與Within相反。

Overlaps():判斷疊迭性,不能相同。

1.1.6.2? 計(jì)算空間關(guān)系

Boundary():計(jì)算外部形狀。

getBoundary():由Boundary()代替,不推薦使用。

Distance():計(jì)算距離。

ConvexHull():計(jì)算最小凸外多邊形。

Buffer():計(jì)算緩沖區(qū)。

Intersection():計(jì)算相交部分。

Union():計(jì)算相并部分。

UnionCascade():串聯(lián)計(jì)算相并部分。

Difference():計(jì)算相差部分。

SymDifference():計(jì)算交集的補(bǔ)集。

SymmetricDifference():由SymDifference()代替,不推薦使用。

Centroid():計(jì)算重心。

Simplify():簡(jiǎn)化圖形。

SimplifyPreserveTopology():簡(jiǎn)化圖形的同時(shí)保留拓?fù)涮匦浴?/p>

Polygonize():多邊形化。

1.1.7 示例

voidCidentifyView::OnGeosSelect()

{

// TODO: 在此添加命令處理程序代碼

char *filePath = "D:\\Test\\SMO\\data\\SHP";

OGRRegisterAll();

OGRDataSource *pODS =OGRSFDriverRegistrar::Open(filePath,TRUE);

OGRLayer *pLayerCity =pODS->GetLayerByName("City_RR");

OGRFeature *pFeature = pLayerCity->GetFeature(0);

OGRGeometry *pGeometry = pFeature->GetGeometryRef();

OGRPoint pt;

pt.setX(87);

pt.setY(29);

OGRBoolean bInterset = pGeometry->Intersects(&pt);

if(bInterset == TRUE)

{

OGRGeometry *pIntersetion =pGeometry->Intersection(&pt);

OGRPoint *pPtIntersection = (OGRPoint *)pIntersetion;

int a = 0;

}

}

1.2 點(diǎn)

1.2.1 OGRPoint

點(diǎn)類型,2D或3D。

由于2D和3D是相對(duì)應(yīng)的,使用wkbFlatten()可以將3D轉(zhuǎn)化為2D(z值置空)。

GetX()/SetX()

GetY()/SetY()

GetZ()/SetZ()

1.3 線

1.3.1 OGRCurve

線類型的抽象基類型。

isClosed():判斷封閉性。

get_Length():獲取長(zhǎng)度。

StartPoint():獲取起始點(diǎn)。

EndPoint():獲取終止點(diǎn)。

Value():獲取指定距離的點(diǎn)。

1.3.2 OGRLineString

折線,由Vertex(節(jié)點(diǎn))組成。

addPoint():添加節(jié)點(diǎn)。

getPoint():獲取節(jié)點(diǎn)。

setPoints():設(shè)置所有節(jié)點(diǎn)。

getPoints():獲取所有節(jié)點(diǎn)。

setNumPoints():設(shè)置節(jié)點(diǎn)數(shù)目。

addSubLineString():添加子線段。

1.3.2.1? 示例

voidCidentifyView::OnGeometryLinestring()

{

// TODO: 在此添加命令處理程序代碼

char *filePath = "D:\\Test\\SMO\\data\\SHP";

OGRRegisterAll();

OGRDataSource *pODS =OGRSFDriverRegistrar::Open(filePath,TRUE);

OGRLayer *pLayerCity =pODS->GetLayerByName("City_RR");

OGRFeature *pFeature = pLayerCity->GetFeature(0);

OGRGeometry *pGeometry = pFeature->GetGeometryRef();

//linestring

OGRLineString lineString;

lineString.addPoint(84,27);

lineString.addPoint(88,31);

OGRBoolean bTouch =pGeometry->Touches(&lineString);//false

OGRBoolean bCross =pGeometry->Crosses(&lineString);//true

short nNum = lineString.getNumPoints();

OGRLineString subLineString;

subLineString.addPoint(90,31);

subLineString.addPoint(91,31);

lineString.addSubLineString(&subLineString);

OGRPoint pt;

lineString.getPoint(3,&pt);//(91,31)

}

1.3.3 OGRLinearRing

環(huán)-封閉的折線。

isClockwise():判斷順時(shí)針。

CloseRings():強(qiáng)制封閉環(huán)。

get_Area():獲取環(huán)的面積。

isPointInRing():判斷點(diǎn)是否在環(huán)的內(nèi)部。

1.3.3.1? 示例

voidCidentifyView::OnGeometryLinearRing()

{

// TODO: 在此添加命令處理程序代碼

char *filePath = "D:\\Test\\SMO\\data\\SHP";

OGRRegisterAll();

OGRDataSource *pODS = OGRSFDriverRegistrar::Open(filePath,TRUE);

OGRLayer *pLayerCity =pODS->GetLayerByName("City_RR");

OGRFeature *pFeature = pLayerCity->GetFeature(0);

OGRGeometry *pGeometry = pFeature->GetGeometryRef();

//linering

OGRLinearRing linearRing;

linearRing.addPoint(84,27);

linearRing.addPoint(88,31);

linearRing.addPoint(88,27);

linearRing.closeRings();//num = 4

double dArea = linearRing.get_Area();//8.0

OGRBoolean bClockwise = linearRing.isClockwise();

OGRPoint pt(87,28);

OGRBoolean bWithin =linearRing.isPointInRing(&pt,TRUE);//true

}

1.4 面

1.4.1 OGRSurface

面抽象基類。

get_Area():返回面積。

PointOnSurface():返回表面的一個(gè)點(diǎn)(確保在面上)。

1.4.2 OGRPolygon

多邊形。由環(huán)組成。可以是復(fù)雜的多邊形(包含島)。

addRing():添加環(huán),如果多邊形為空,則為外環(huán),如果不為空,則為內(nèi)環(huán)(島)。將傳入的環(huán)復(fù)制一個(gè)環(huán),加入多邊形中。

addRingDirectly():添加環(huán)。功能同addRing(),直接使用傳入的環(huán),不再構(gòu)建。

closeRings():強(qiáng)制封閉環(huán)。

getExteriorRing():獲取外環(huán)。

getInteriorRing():獲取某個(gè)內(nèi)環(huán)。

getNumInteriorRing():獲取內(nèi)環(huán)數(shù)目。

1.4.2.1? 示例

voidCidentifyView::OnGeometryPolygon()

{

// TODO: 在此添加命令處理程序代碼

char *filePath = "D:\\Test\\SMO\\data\\SHP";

OGRRegisterAll();

OGRDataSource *pODS =OGRSFDriverRegistrar::Open(filePath,TRUE);

OGRLayer *pLayerCity =pODS->GetLayerByName("City_RR");

OGRFeature *pFeature = pLayerCity->GetFeature(0);

OGRGeometry *pGeometry = pFeature->GetGeometryRef();

//polygon

OGRLinearRing ringOut;

ringOut.addPoint(80,30);

ringOut.addPoint(80,40);

ringOut.addPoint(90,40);

ringOut.addPoint(90,30);

ringOut.closeRings();

OGRLinearRing ringIn0;

ringIn0.addPoint(82,32);

ringIn0.addPoint(82,38);

ringIn0.addPoint(88,38);

ringIn0.addPoint(88,32);

ringIn0.closeRings();

OGRPolygon polygon;

polygon.addRing(&ringOut);

polygon.addRing(&ringIn0);

polygon.addRingDirectly(&ringIn0);

int nNum = polygon.getNumInteriorRings();

const OGRLinearRing *ringIn = polygon.getInteriorRing(0);

OGRLinearRing *prIn0 = (OGRLinearRing *)ringIn->clone();

OGRPoint pt0;

prIn0->getPoint(0,&pt0);

OGRLinearRing ringOut0 = polygon.getExteriorRing();

polygon.closeRings();

//change,addRing()與addRingDirectly()區(qū)別

ringIn0.addPoint(108,78);

ringIn0.getPoint(5,&pt0);//(108,78)

ringIn->getPoint(5,&pt0);//隨機(jī)值

const OGRLinearRing *ringIn1 = polygon.getInteriorRing(1);

ringIn1->getPoint(5,&pt0);//(108,78)

}

1.5 幾何對(duì)象集合

1.5.1 OGRGeometryCollection

幾何對(duì)象集合。

addGeometry():添加幾何對(duì)象(特定派生類只能添加特定的幾何對(duì)象)。復(fù)制。

addGeometryDirectly():直接添加幾何對(duì)象。不再?gòu)?fù)制。

removeGeometry():移除幾何對(duì)象。

getNumGeometries():獲取集合中對(duì)象的數(shù)目。

getGeometryRef():獲取幾何對(duì)象。是集合中的某一個(gè)對(duì)象。

1.5.2 OGRMultiPoint

1.5.3 OGRMultiLineString

1.5.4 OGRMultiPolygon

1.5.5 示例

voidCidentifyView::OnGeometryCollection()

{

// TODO: 在此添加命令處理程序代碼

char *filePath = "D:\\Test\\SMO\\data\\SHP";

OGRRegisterAll();

OGRDataSource *pODS =OGRSFDriverRegistrar::Open(filePath,TRUE);

OGRLayer *pLayerCity =pODS->GetLayerByName("City_RR");

OGRFeature *pFeature = pLayerCity->GetFeature(0);

OGRGeometry *pGeometry = pFeature->GetGeometryRef();

OGRGeometryCollection colGeometry;

colGeometry.addGeometry(pGeometry);

colGeometry.addGeometry(pGeometry);

int iNum = colGeometry.getNumGeometries();

OGRPolygon *pGeo = (OGRPolygon *)colGeometry.getGeometryRef(0);

OGRPolygon *pGeo1 = (OGRPolygon*)colGeometry.getGeometryRef(1);

colGeometry.removeGeometry(1,FALSE);//如果這里使用默認(rèn)的TRUE刪除,則pGeo1所占用的內(nèi)存會(huì)被釋放,再次調(diào)用會(huì)出錯(cuò)。

OGREnvelope env;

pGeo->getEnvelope(&env);

pGeo1->getEnvelope(&env);//如果刪除時(shí)釋放,則此句會(huì)報(bào)錯(cuò)。

OGRPoint pt0;

pGeo1->getExteriorRing()->getPoint(0,&pt0);

OGRMultiPolygon colPoly;

colPoly.addGeometry(pGeometry);

OGRErr errAdd = colPoly.addGeometry(&pt0);//類型不一致,無(wú)法添加

errAdd = colPoly.addGeometry(&colGeometry);//類型不一致,無(wú)法添加

errAdd = colGeometry.addGeometry(&colPoly);//可以添加

OGRMultiPoint colPt;

colPt.addGeometry(&pt0);

colPt.addGeometry(&pt0);

errAdd = colGeometry.addGeometry(&colPt);//可以添加

errAdd = colGeometry.addGeometry(&pt0);//可以添加

OGRMultiPoint colPt2;

colPt2.addGeometry(&pt0);

colPt2.addGeometry(&pt0);

errAdd = colPt.addGeometry(&colPt2);//類型不一致,無(wú)法添加

if(errAdd != OGRERR_NONE)

{

TRACE(_T("OGRERR!\n"));

}

}

2 OGR空間參考模型:OGRSpatialReference、OGRCoordinateTransformation

目的:設(shè)置投影和大地參考(DATUM)。

方法:

2.1 坐標(biāo)系統(tǒng):OGRSpatialReference

2.1.1 地理坐標(biāo)系統(tǒng):用于描地球的球面模型。包含DATUM。

1)?? 設(shè)置地理坐標(biāo)系統(tǒng):SetGeogCS()。注意要使用標(biāo)準(zhǔn)的DATUM名稱,其它參數(shù)用于設(shè)置為用戶可以識(shí)別的名稱。一般情況下,不需要自己定義坐標(biāo)系統(tǒng),而是使用一些已經(jīng)定義好的坐標(biāo)系統(tǒng)。OGR可以使用部分內(nèi)置的坐標(biāo)系統(tǒng)。

2)?? 設(shè)置命名或編號(hào)坐標(biāo)系統(tǒng):SetWellknownGeogsCS()。

3)?? WKT格式交換:exportToWKT()/importFromWKT()。返回值要以CPLFree()或OGRFree()釋放。

4)?? 示例:設(shè)置坐標(biāo)系統(tǒng),如果無(wú)指定值,則使用WGS84

QByteArray baCrs("WGS84");

if(!strTargetCRS.isEmpty ()){

baCrs = strTargetCRS.toLocal8Bit ();

}

OGRSpatialReference oSRS;

oSRS.SetWellKnownGeogCS(baCrs);

char *pszDstWKT = NULL;

oSRS.exportToWkt( &pszDstWKT );

CPLErr err = pDstDst->SetProjection(pszDstWKT);

CPLFree(pszDstWKT);

if(CE_None!=err){

qDebug()<

}

2.1.2 投影坐標(biāo)系統(tǒng):將球面坐標(biāo)投影到平面上,以平面的形式描述地球。

依賴地理坐標(biāo)系統(tǒng)。因此需要設(shè)置地理坐標(biāo)系統(tǒng)。

注意:順序設(shè)置投影系統(tǒng)。1.創(chuàng)建投影。2.設(shè)置相關(guān)地理坐標(biāo)。3.設(shè)置投影。

1)?? 設(shè)置命名或編號(hào)坐標(biāo)系統(tǒng):importFromEPSG(),importFromProj4()等。

2)?? 設(shè)置常用投影坐標(biāo)系統(tǒng):SetUTM()/SetTM()/SetLC()。

3)?? 自定義投影系統(tǒng)名稱(僅命名):SetProjCS()。

2.1.3 坐標(biāo)參數(shù)查詢與設(shè)置

2.1.3.1? 坐標(biāo)系統(tǒng)類型

isProected():判斷是否為投影坐標(biāo)系統(tǒng)。

isGeographic():判斷是否為地理坐標(biāo)系統(tǒng)。

2.1.3.2? 地球橢球體模型參數(shù)

GetSemiMajor():長(zhǎng)半軸。

GetSemiMinor():短半軸。

GetInvFlattening():扁率的倒數(shù)。

2.1.3.3? 具體參數(shù)值

GetAttrValue():參數(shù)值。

GetProjParm():投影參數(shù)值,可以使用預(yù)定義的宏進(jìn)行獲取。

GetLinearUnits():類型,與M的轉(zhuǎn)換單位。

2.1.4 示例

voidCidentifyView::OnSrsGeogcs()

{

// TODO: 在此添加命令處理程序代碼

OGRSpatialReference srs;

srs.SetGeogCS("mySrs","WGS_1984","myEllipsoid",SRS_WGS84_SEMIMAJOR,SRS_WGS84_INVFLATTENING,"Greenwich",0.0,"degree",atof(SRS_UA_DEGREE_CONV));

char *pszWKT = NULL;

srs.exportToWkt(&pszWKT);

srs.SetWellKnownGeogCS("EPSG:4326");

srs.exportToWkt(&pszWKT);

OGRSpatialReference srsProj;

srsProj.SetProjCS("myProject");

srsProj.SetWellKnownGeogCS("EPSG:4326");

srsProj.SetUTM(17,TRUE);

char *pszPROJ = NULL;

srsProj.exportToWkt(&pszPROJ);

int iPrj = srsProj.IsProjected();

int iGeo = srsProj.IsGeographic();

double dMajor = srsProj.GetSemiMajor();

double dMinor = srsProj.GetSemiMinor();

double dInvF = srsProj.GetInvFlattening();

double dUnits = srsProj.GetLinearUnits();

const char *pName =srsProj.GetAttrValue("PROJECTION");

double dMeridian = srsProj.GetProjParm(SRS_PP_CENTRAL_MERIDIAN);

CPLFree(pszWKT);

CPLFree(pszPROJ);

}

2.2 坐標(biāo)系統(tǒng)轉(zhuǎn)換:OGRCoordinateTransformation

目標(biāo):將點(diǎn)進(jìn)行坐標(biāo)系統(tǒng)轉(zhuǎn)換。

方法:

創(chuàng)建坐標(biāo)轉(zhuǎn)換對(duì)象:OGRCreateCoordinateTransformation()。

轉(zhuǎn)換坐標(biāo)系統(tǒng):OGRCoordinateTransformation::Transform()。

注意:如果使用了系統(tǒng)未定義的DATUM,有可能導(dǎo)致錯(cuò)誤,使用時(shí)注意檢查。

2.2.1 示例

voidCidentifyView::OnSrsTransform()

{

// TODO: 在此添加命令處理程序代碼

//target

OGRSpatialReference srsProj;

srsProj.SetProjCS("BJUTM");

srsProj.SetWellKnownGeogCS("EPSG:4326");

srsProj.SetUTM(50,TRUE);

char *pszPROJ = NULL;

srsProj.exportToWkt(&pszPROJ);

//source

OGRSpatialReference srsGeog;

srsGeog.SetWellKnownGeogCS("EPSG:4326");

//transfrom

OGRCoordinateTransformation *pCT =OGRCreateCoordinateTransformation(&srsGeog,&srsProj);

double x = 88,y=30;

pCT->Transform(1,&x,&y);//x=-2356049.0001576482,y=3701005.1820355225

}

3?OGR地圖要素模型OGRFeature

要素,包含屬性和地圖幾何圖元。一般用于操作空間和屬性的聯(lián)動(dòng)。

主要由屬性O(shè)GRField、OGRFeatureDefn和幾何圖元OGRGeometry組成。由nFID唯一標(biāo)識(shí)。

3.1 OGRFeatureDefn

屬性表定義類。

用于存取屬性表的結(jié)構(gòu),以及幾何圖形的元數(shù)據(jù)。

GetName():獲取屬性表結(jié)構(gòu)名稱,默認(rèn)是圖層名稱。

GetFieldCount():獲取列數(shù)目。

GetFieldDefn():獲取列定義。

GetFieldIndex():獲取列索引。

AddFieldDefn():添加列定義。

DeleteFiledDefn():刪除列定義。

RecorderFieldDefn():保存屬性表定義。只有無(wú)相關(guān)OGRFeature存在時(shí)才可使用,如果有,則使用OGR_L_RecorderFields()。

GetGeomType():獲取幾何圖形類型。

SetGeomType():設(shè)置幾何圖形類型。

Clone():復(fù)制。

Release():釋放。

IsGeometryIgnored():判斷是否可以忽略幾何圖形。

SetGeometryIgnored():設(shè)置是否可以忽略幾何圖形。

IsStyleIgnored():判斷是否可以忽略樣式。

SetStyleIgnored():設(shè)置是否可以忽略樣式。

IsSame():判斷相同。

3.2 OGRFieldDef

用于定義字段的屬性。包含精度、類型、名稱等。

SetName():設(shè)置名稱。

GetNameRef():獲取名稱。

GetType():讀取類型。

SetType():設(shè)置類型。

GetJustify():讀取對(duì)齊方式。

SetJustify():設(shè)置對(duì)齊方式。

GetWidth()/SetWidth():存取寬度。

GetPricision()/SetPricision():存取精度。

Set():一次性設(shè)置。

SetDefault():設(shè)置默認(rèn)值。

GetDefault():讀取默認(rèn)值。

IsIgnored():判斷是否可忽略。

SetIgnored():設(shè)置是否可忽略。

IsSame():判斷相同。

3.3 OGRField

元素。是一個(gè)集合。用于標(biāo)識(shí)要素內(nèi)部某一個(gè)元素的值。

3.4 OGRStyleTable等樣式類

主要用于管理樣式。

OGRSytleTable:樣式表類,樣式中的所有具體內(nèi)容。

OGRStyleMgr:樣式管理器,使用時(shí)要先用樣式表生成此類。

OGRStyleTool:由樣式管理器進(jìn)行管理,用于操作具體的樣式。

OGRStylePen:具體畫筆樣式。(OGRStyleTool派生)

OGRStyleBrush:具體的畫刷樣式。(OGRStyleTool派生)

OGRStyleLabel:具體的標(biāo)簽樣式。(OGRStyleTool派生)

OGRStyleSymbol:具體的符號(hào)樣式。(OGRStyleTool派生)

3.4.1 參考

3.5 OGRFeature

3.5.1 屬性操作

3.5.1.1? 表結(jié)構(gòu)操作

GetDefnRef():獲取元素的表結(jié)構(gòu)定義OGRFeatureDefn。

DumpReadable():導(dǎo)出為TXT文件。

setFrom():從另一個(gè)Feature導(dǎo)入屬性和幾何元素。

setFieldsFrom():從另一個(gè)Feature導(dǎo)入屬性數(shù)據(jù)。

RemapFields():重新排列屬性。

3.5.1.2? 值操作

GetFieldCount():數(shù)目。

GetFieldIndex():索引號(hào)。

isFiledSet():判斷是否已經(jīng)設(shè)置。

UnsetField():置空。

GetRawFiled():獲取OGRField類型的值。

GetFiled*():按照不同的類型獲取值。

SetFiled():設(shè)置屬性值。

GetFID()/SetFID():FID存取。

3.5.2 幾何操作

SetGeometry():設(shè)置幾何圖形。

SetGeometryDirectly():直接添加。與StealGeometry()相反。

StealGeometry():與SetGeometryDirectly()相反,直接取出。

GetGeometryRef():

3.5.3 元素操作

Clone():復(fù)制。

Equal():判斷相同。

CreateFeature():創(chuàng)建,static。

DestroyFeature():銷毀,static。在GetNextFeature()等 函數(shù)中會(huì)返回一個(gè)復(fù)制對(duì)象,供調(diào)用者使用,使用完成之后應(yīng)釋放。但是由于Windows的DLL機(jī)制,DLL與主程序之間使用不同的堆,使用主程序釋放DLL堆內(nèi)容會(huì)報(bào)錯(cuò),所有會(huì)才此函數(shù)來(lái)保證兼容性。

3.5.4 樣式操作

GetStyleString():讀取樣式字符串。

SetStyleString():設(shè)置樣式字符串。

SetStyleStringDirectly():直接設(shè)置。

GetStyleTable():讀取樣式表。

SetStyleTable():設(shè)置樣式表。

SetStyleTableDirectly():直接設(shè)置樣式表。

3.5.5 中文漢字亂碼的問(wèn)題解決

3.5.5.1? 原因

GDAL/OGR默認(rèn)使用UTF-8進(jìn)行編碼,Shape默認(rèn)使用ANSI(可以設(shè)置為UTF-8,但不能識(shí)別UNICODE)。讀入Shape時(shí),只能以ANSI方式讀入。如果Shape是以UTF-8類型編碼的話,會(huì)造成亂碼。

3.5.5.2? 解決方式

1)?? 設(shè)置新圖層為UTF-8編碼方式

這一步很重要,因?yàn)槟J(rèn)會(huì)以ANSI方式編碼。設(shè)置之后,會(huì)將ANSI類型的編碼,轉(zhuǎn)換為UTF-8格式的編碼。所以,如果原始數(shù)據(jù)是UTF-8類型的編碼,要先轉(zhuǎn)換為ANSI格式編碼,再保存。

CPLSetConfigOption("SHAPE_ENCODING","");

2)?? 以ANSI讀入原始數(shù)據(jù)(只能讀入為ANSI,但編碼方式取決于原始數(shù)據(jù))。

3)?? 轉(zhuǎn)換為Unicode

如果原圖層為UTF-8編碼的話,必須使用UTF-8編碼格式讀入并轉(zhuǎn)換為Unicode,如果原圖層為ANSI編碼格式,則以ANSI編碼格式轉(zhuǎn)換為Unicode。

這一步,將原始數(shù)據(jù)進(jìn)行還原。

4)?? 將UNICODE轉(zhuǎn)換為ANSI編碼格式,存入元素之中。

這一步,將數(shù)據(jù)轉(zhuǎn)換為OGR能夠正確設(shè)置的編碼格式(只能識(shí)別ANSI)。

3.5.5.3? 參考

3.5.5.4? 示例

//設(shè)置圖層的編碼格式

CPLSetConfigOption("SHAPE_ENCODING","");

OGRLayer *pOGRLayerDes =pDSDes->CopyLayer(pOGRLayerSrc,pDesLayerName);

//設(shè)置元素的編碼格式

voidCFeature::translateAttributeToUTF8()

{

OGRFeatureDefn *pFeatureDefn = m_pFeature->GetDefnRef();

int nFieldCount = pFeatureDefn->GetFieldCount();

for(int i=0;i

{

OGRFieldDefn *pFieldDefn = NULL;

pFieldDefn = pFeatureDefn->GetFieldDefn(i);

OGRFieldType eFieldType = pFieldDefn->GetType();

//漢字處理

if(eFieldType == OFTString)

{

IConvertCString *pConvertCString = NULL;

getConvertCString(&pConvertCString);

//讀取元素

const char *csFieldValue = m_pFeature->GetFieldAsString(i);

//以UTF8格式轉(zhuǎn)化為寬字符

CString strFieldValue;

pConvertCString->fromUTF8(csFieldValue,strFieldValue);

//轉(zhuǎn)化為ANSI

char *pStrANSI;

pConvertCString->toChar(strFieldValue,pStrANSI);

m_pFeature->SetField(i,pStrANSI);

//release

delete pStrANSI;

pStrANSI = NULL;

delete pConvertCString;

pConvertCString = NULL;

}

else//直接Copy

{

OGRField *pValue = m_pFeature->GetRawFieldRef(i);

m_pFeature->SetField(i,pValue);

}

}

}

3.6 示例

voidCidentifyView::OnFeatureField()

{

// TODO: 在此添加命令處理程序代碼

char *filePath = "D:\\Test\\SMO\\data\\SHP";

OGRRegisterAll();

OGRDataSource *pODS =OGRSFDriverRegistrar::Open(filePath,TRUE);

OGRLayer *pLayerCity =pODS->GetLayerByName("City_RR");

OGRFeature *pFeature = pLayerCity->GetFeature(0);

//feature def

OGRFeatureDefn *pDef = pFeature->GetDefnRef();

const char * pDefName = pDef->GetName();

int iFieldCount = pDef->GetFieldCount();

int iDefIndex = pDef->GetFieldIndex("NAME");

OGRwkbGeometryType tType = pDef->GetGeomType();

//field def

OGRFieldDefn *pFieldDef = pDef->GetFieldDefn(iDefIndex);

int iWidth = pFieldDef->GetWidth();

int iPresion = pFieldDef->GetPrecision();

const OGRField *pFieldDefault = pFieldDef->GetDefaultRef();

OGRFieldType fieldType = pFieldDef->GetType();

const char *pFieldNam = pFieldDef->GetNameRef();

OGRJustification jstf = pFieldDef->GetJustify();

int iFieldIndex = pFeature->GetFieldIndex("NAME");

OGRField *pField = pFeature->GetRawFieldRef(iFieldIndex);

int iSet = pFeature->IsFieldSet(iFieldIndex);

pFeature->UnsetField(iFieldIndex);

int iCount = pFeature->GetFieldCount();

pFeature->SetField(iFieldIndex,"MyString");

const char *pFieldString =pFeature->GetFieldAsString(iFieldIndex);

pFeature->SetFID(8877L);

long lFID = pFeature->GetFID();

//style

const char *pStyle = pFeature->GetStyleString();

OGRStyleTable *pStyleTable = new OGRStyleTable;

OGRStyleMgr *pMgr = new OGRStyleMgr(pStyleTable);

pMgr->AddPart("PEN(w:10)");

//GBool bAdd =pMgr->AddStyle("BRUSH","(w:10)");

OGRStylePen *pPenStyle? =(OGRStylePen *)pMgr->GetPart(0);

GBool bAdd =pMgr->AddStyle("PEN","(w:10)");

OGRStyleLabel styleLabel;

styleLabel.SetAngle(10);

pMgr->AddPart(&styleLabel);

int iStyleCount = pMgr->GetPartCount();

OGRStyleTool *pTool = pMgr->GetPart(0);

OGRStyleTool *pTool1 = pMgr->GetPart(1);

const char * pStrBrush =pMgr->GetStyleByName("Pen");

OGRStyleTable *pTableNow = pMgr->GetDataSetStyleTable();

OGRFeature *pFeatureNew = OGRFeature::CreateFeature(pDef);

OGRPoint pt(88,30);

pFeatureNew->SetGeometry(&pt);

pFeatureNew->SetField(0,"963");

}

4?OGR地圖組織模型OGRLayer/OGRDataSource/OGRDriver

4.1 OGRLayer

相同元素的集合。

注意,在編譯元素的時(shí)候,一定要在Open時(shí),將bUpdate開關(guān)設(shè)置為TRUE。

4.1.1 過(guò)濾查詢

GetSpatialFilter()/SetSpatialFilter():讀取/設(shè)置空間過(guò)濾幾何對(duì)象。再下次查詢時(shí)會(huì)進(jìn)行空間過(guò)濾。

SetSpatialFilterRect():設(shè)置空間過(guò)濾為指定的矩形。當(dāng)年版本的OGR有BUG,只能使用過(guò)濾圖形的外接矩形與圖層中圖形的外接矩形進(jìn)行分析。使用OGRGeometry的Intersects()函數(shù),在GEOS庫(kù)下可以進(jìn)行具體操作。

SetAttributeFilter():設(shè)置屬性過(guò)濾條件。格式為SQL Where:NAME = ‘dd’。

注意:OGR使用SQLITE進(jìn)行查詢,SQLITE使用UTF8格式,所以查詢的時(shí)候應(yīng)該轉(zhuǎn)化為UTF8格式,雖然看上去是亂碼,但是SQLITE可以識(shí)別。查詢結(jié)果是正確的。

4.1.2 元素讀取

ResetReading():重置讀取。

GetNextFeature():獲取下個(gè)元素。

SetNextByIndex():獲取指定的元素。

GetFeature():按FID讀取元素。注意,讀取元素后,生成元素副本(使用完成后一定要釋放),并不是當(dāng)前圖層要元素,如果要進(jìn)行修改,則應(yīng)該將修改后的內(nèi)容使用SetFeature()設(shè)置原有元素(無(wú)法生成新元素,只能修改原有元素,使用CreateFeature()生成新元素)。

SetFeature():設(shè)置元素。

CreateFeature():生成元素,如果要生成新的元素,請(qǐng)使用此函數(shù)。

DeleteFeature():刪除元素。

GetFeatureCount():獲取元素?cái)?shù)量。

GetFeaturesRead():

4.1.3 圖層屬性

GetName():圖層名稱。

GetGeomType():幾何類型。

GetLayerDefn():屬性表定義。

GetSpatialRef():空間參考。注意,這里返回的空間參考OGRSpatialReference*是原圖層的中的指針,只讀,不可釋放。

GetExtent():外接多邊形。可以使用TRUE強(qiáng)制計(jì)算圖層的MBR(minimum bounding rectangle),如果使用FALSE,則在浪費(fèi)較多資源的情況下,會(huì)返回失敗,并不進(jìn)行計(jì)算。如果不存在有效的圖形,則返回OGRERR_FAILURE。不同的驅(qū)動(dòng)對(duì)空間過(guò)濾條件的影響也不同,所以應(yīng)該不使用空間過(guò)濾。有的驅(qū)動(dòng)會(huì)改變圖層的當(dāng)前元素位置。返回OGREnvelop對(duì)象(包含Merge()函數(shù),可以獲取合并后的MBR)。

TestCapability():測(cè)試功能。

GetInfo():點(diǎn)位函數(shù)。用于返回元數(shù)據(jù)。暫時(shí)無(wú)功能,等待完善。

CreateField():生成列。

DeleteField():刪除列。

RecorderFields():重新排列內(nèi)部列的順序。???

RecorderField():不推薦使用,由RecordsFields()代替。

AlterFieldDefn():修改列定義。

SyncToDisk():寫入硬盤。

GetFIDColumn():獲取FID列名。

GetGeometryColumn():獲取幾何列名。

SetIgnoredFields():設(shè)置忽略列。

AttributeFilterEvaluationNeedsGeometry():?

InitializeIndexSupport():?

GetIndex():?

4.1.4 樣式

GetStyleTable():樣式表。返回值為只讀,不可修改,不可釋放。

SetStyleTable():設(shè)置樣式表。

SetStyleTableDirectly():直接設(shè)置樣式表。

4.1.5 事務(wù)

StartTransaction():開始。

CommitTransaction():提交。

RollbackTransaction():回滾。

4.1.6 圖層空間分析Overlay

Intersection():交(圖層合并)。

Union():并。

SymDifference():和-交。

Identify():交的補(bǔ)。

Update():并-》合并。

Clip():交(僅輸入圖層)。

Erase():刪除。

圖層疊迭操作會(huì)使用兩個(gè)圖層進(jìn)行進(jìn)行疊迭分析,將相關(guān)連的圖形按照不同的操作方法生成一個(gè)結(jié)果圖層。

注意:坐標(biāo)系統(tǒng)很重要!

1)?? 進(jìn)行疊迭分析時(shí),要注意操作的兩個(gè)圖層要有相同的空間參考。這里有個(gè)要注意的地方就是常用的WGS84坐標(biāo)系。因?yàn)镋SPG4326和WGS84其它是一個(gè)坐標(biāo)系統(tǒng),但是如果不明確指定ESPG4326的話DATUM有稍許的不同(DATUM的單位精確度不同),所有雖然都是WGS84,但是操作時(shí)卻被認(rèn)為是不同的空間參考(ARCGIS具有同樣的操作問(wèn)題)。所有在使用前應(yīng)該將坐標(biāo)系統(tǒng)一(使用PROJECT可以進(jìn)行轉(zhuǎn)換)。

2)?? 如果操作時(shí)坐標(biāo)系統(tǒng)相同,僅是名稱不同,在操作時(shí)會(huì)給出警告(ARCGIS會(huì)提示,OGR不會(huì)提示),但不會(huì)出錯(cuò),仍然可以得到正確的結(jié)果。

示例

#include

voidCidentifyView::OnGeosIdentify()

{

// TODO: 在此添加命令處理程序代碼

char *filePath = "D:\\Test\\SMO\\data\\SHP";

char *layerName1 = "result";//ESPG4326

char *layerName2 = "city_RR_new";//Custom

OGRLayer *pLayer1 = NULL;

OGRLayer *pLayer2 = NULL;

OGRDataSource *pODS = NULL;

OGRRegisterAll();

pODS = OGRSFDriverRegistrar::Open(filePath,TRUE);

//讀取取要進(jìn)行Union的兩個(gè)圖層

pLayer1 = pODS->GetLayerByName(layerName1);

pLayer2 = pODS->GetLayerByName(layerName2);

//OGRLayer *pLayer3 =pODS->CreateLayer("city_RR_new",pLayer2->GetSpatialRef(),wkbPolygon,NULL);

//pLayer3->CreateFeature(pLayer2->GetFeature(0));

//pLayer3->SyncToDisk();

//創(chuàng)建結(jié)果圖層

OGRLayer *pResultLayer = NULL;

OGRSpatialReference sr4326;

sr4326.SetWellKnownGeogCS("WGS84");

pResultLayer =pODS->CreateLayer("resultDiffName",&sr4326,wkbPolygon,NULL);

//配置Union函數(shù)中的第三個(gè)參數(shù)

char **p = new char *[4];

p[0] = "SKIP_FAILURES=YES";

p[1] = "PROMOTE_TO_MULTI=YES";

p[2] = "INPUT_PREFIX=1";

p[3] = "METHOD_PREFIX=2";

OGRErr errResult =pLayer1->Erase(pLayer2,pResultLayer,p,NULL,NULL);

//將對(duì)pResultLayer的編輯寫入文件,如果不加這句,result文件中將沒(méi)有記錄

pResultLayer->SyncToDisk();

OGRDataSource::DestroyDataSource(pODS);

}

4.1.7 示例

voidCidentifyView::OnLayerLayer()

{

// TODO: 在此添加命令處理程序代碼

char *filePath = "D:\\Test\\SMO\\data\\SHP";

OGRRegisterAll();

OGRDataSource *pODS =OGRSFDriverRegistrar::Open(filePath,TRUE);

OGRLayer *pLayerCity =pODS->GetLayerByName("City_RR");

int iFCount = pLayerCity->GetFeatureCount();

const char *pLayerInfo =pLayerCity->GetInfo("NAME");

pLayerCity->SetSpatialFilterRect(80,25,100,40);

pLayerCity->SetAttributeFilter("NAME = '張掖市'");

pLayerCity->ResetReading();

OGRFeature *pFeature = NULL;

while( pFeature = pLayerCity->GetNextFeature())

{

const char *pStrName =pFeature->GetFieldAsString("NAME");

TRACE(pStrName);

TRACE("\n");

}

GIntBig biNum = pLayerCity->GetFeaturesRead();

OGRGeometry *pGeo = pLayerCity->GetSpatialFilter();

}

4.2 OGRDataSource

數(shù)據(jù)源。圖層的容器。當(dāng)數(shù)據(jù)源銷毀時(shí),其相關(guān)的圖層也會(huì)釋放。

4.2.1 數(shù)據(jù)源

GetName():數(shù)據(jù)源名稱。

TestCapability():測(cè)試功能。

ExecuteSQL():Sqlite數(shù)據(jù)SQL數(shù)據(jù)功能。

ReleaseResultSet():釋放SQL查詢結(jié)果。

SyncToDisk():寫入硬盤。

DestoryDataSource():釋放對(duì)象。將會(huì)銷毀所有依賴的圖層。

4.2.2 Layer

GetLayerCount():數(shù)目。

GetLayer():圖層。

GetLayerByName():圖層。

DeleteLayer():刪除圖層。

CreateLayer():創(chuàng)建圖層。

CopyLayer():復(fù)制圖層。

4.2.3 Style

GetStyleTable():樣式表。

SetStyleTable():設(shè)置。

SetStyleTableDirectly():直接設(shè)置。

4.2.4 Driver

GetDriver():獲取。

SetDriver():調(diào)協(xié)。

4.3 文件格式驅(qū)動(dòng)OGRSFDriver

用于支持對(duì)不同類型的文件的操作。

使用OGRSFDriver操作文件,在操作之前要使用OGRSFDriverRegister進(jìn)行注冊(cè)。

4.3.1 OGRSFDriverRegistrar

管理OGR對(duì)文件格式的支持。只有注冊(cè)過(guò)的文件格式才能使用驅(qū)動(dòng)操作。單例。不要使用此類進(jìn)行派生。

為了使用所有可以支持的數(shù)據(jù)格式(即使有些用不到,OGR還是會(huì)在內(nèi)部維護(hù)支持的數(shù)據(jù)格式列表),通常使用OGRRegisterAll():注冊(cè)所有支持的類型。

OGR支持的文件格式類型參見4.3.3。

4.3.1.1? Driver

OpenShared():按名稱打開數(shù)據(jù)源的驅(qū)動(dòng)。

RegisterDriver():注冊(cè)驅(qū)動(dòng)。

DeregisterDriver():反注冊(cè)驅(qū)動(dòng)。

GetDriverCount():獲取驅(qū)動(dòng)數(shù)目。

GetDriver():獲取驅(qū)動(dòng)。

GetDriverByName():獲取驅(qū)動(dòng)。

AutoLoadDrivers():自動(dòng)搜索庫(kù)文件,加載驅(qū)動(dòng)。

GetRegistrar():返回本類實(shí)例。如果沒(méi)有,則新建。Static。

4.3.1.2? DataSource

GetOpenDSCount():打開的數(shù)據(jù)源數(shù)目。??????

GetOpenDS():獲取數(shù)據(jù)源。

ReleaseDataSource():釋放數(shù)據(jù)源。

Open():打開數(shù)據(jù)源,Static。通常用來(lái)快速打開數(shù)據(jù)源(不關(guān)心驅(qū)動(dòng)的情況下)。如果bUpdate設(shè)置為TRUE,可以進(jìn)行編輯,如果為FALSE,則只讀。

4.3.2 OGRSFDriver

驅(qū)動(dòng)類。支持對(duì)特定文件格式的操作。

GetName():名稱。

Open():打開數(shù)據(jù)源。

TestCapability():測(cè)試功能。

CreateDataSource():創(chuàng)建數(shù)據(jù)源。

DeleteDataSource():刪除數(shù)據(jù)源。

CopyDataSource():復(fù)制數(shù)據(jù)源。

4.3.3 OGR Vector Formats

4.4 示例

voidCidentifyView::OnLayerDatasource()

{

// TODO: 在此添加命令處理程序代碼

char *filePath = "D:\\Test\\SMO\\data\\SHP";

OGRRegisterAll();

OGRSFDriverRegistrar *pRegistrar =OGRSFDriverRegistrar::GetRegistrar();

int iCount = pRegistrar->GetDriverCount();

OGRSFDriver *pDriver0 = pRegistrar->GetDriver(0);

const char *pName0 = pDriver0->GetName();

OGRSFDriver *pDriverShp =pRegistrar->GetDriverByName("ESRI Shapefile");

const char *pNameShp = pDriverShp->GetName();

char *cityPath ="D:\\Test\\SMO\\data\\SHP\\City_RR.shp";

OGRDataSource *pDSCity = pDriverShp->Open(cityPath,FALSE);

OGRDataSource *pODS =OGRSFDriverRegistrar::Open(filePath,TRUE);

int iOpenDS = pRegistrar->GetOpenDSCount();//無(wú)效?

OGRDataSource *pDS = pRegistrar->GetOpenDS(0);

const char* pName = pODS->GetName();

OGRSFDriver *pDriver = pODS->GetDriver();

}

5 ?OGR坐標(biāo)系統(tǒng)模型

6 ?OGR樣式模型

7 ?實(shí)例操作

8 ?OGR實(shí)用工具

8.1 字符串

cpl_string.h/cpp:Common portable library string,通用接口庫(kù),字符串操作。

總結(jié)

以上是生活随笔為你收集整理的ogr 缓冲区_OGR 数据模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

午夜精品久久久久久久爽 | 国产一区免费视频 | 久久久官网 | 深爱激情亚洲 | 久久精品电影网 | 欧美日韩免费一区二区三区 | 日韩三级视频 | 一区二区三区四区在线 | 亚洲精品综合在线观看 | 九九视频这里只有精品 | 中文区中文字幕免费看 | 亚洲精品理论 | 福利一区二区在线 | 亚洲理论片在线观看 | 亚洲国产wwwccc36天堂 | 欧美专区日韩专区 | 欧美做受高潮电影o | 二区视频在线观看 | 国产又粗又猛又爽 | 草在线视频 | 成人午夜精品久久久久久久3d | 在线色亚洲 | 国产一区欧美在线 | 国产黄大片 | 国产中文字幕视频在线观看 | 精品国产乱码久久久久久天美 | 一本色道久久综合亚洲二区三区 | 在线精品一区二区 | 欧美另类色图 | 天天射天天| 欧美成人精品三级在线观看播放 | 91精品网站在线观看 | 色婷婷五 | 成人黄大片视频在线观看 | 天天综合导航 | 黄色av观看 | 99久久精品无免国产免费 | 欧美日产在线观看 | 日韩精品一区二区三区不卡 | 成人一区二区在线观看 | 久草在线视频网站 | 在线午夜电影神马影院 | 久久夜色精品国产欧美乱极品 | 亚洲精品中文字幕视频 | 国产一二三区av | av在线免费观看不卡 | 日本字幕网 | 午夜性生活 | 超碰国产97 | 国产免费一区二区三区网站免费 | 美女视频黄的免费的 | 久久久久电影网站 | 亚洲久草网| 日韩精品久久久久 | 亚洲天堂首页 | 在线导航福利 | 天天爱天天操天天射 | 国产一区二区观看 | 成人av资源网 | 日韩av在线高清 | 国产精品久久电影观看 | 中文字幕久久精品 | 亚洲一级黄色片 | 干亚洲少妇 | www.91成人 | 天天操天天操一操 | 久久综合狠狠 | 91av在线视频播放 | 欧美a级成人淫片免费看 | 二区中文字幕 | 日韩r级电影在线观看 | 91大神在线看 | 亚洲婷婷在线视频 | 69精品在线观看 | 国产精品资源 | 婷婷五月色综合 | 久久视频免费在线 | 日韩午夜电影院 | 欧美日韩视频网站 | 欧美高清成人 | 国产精品毛片一区视频 | 五月婷婷开心中文字幕 | 国产一区二区不卡视频 | 国产精选视频 | 欧美精品一二三 | 91在线视频精品 | 狠狠干美女 | 五月婷婷综合在线观看 | 亚洲国产欧美在线看片xxoo | 玖玖视频| 一区二区中文字幕在线观看 | 亚洲欧洲成人 | 亚洲一区日韩精品 | 亚洲综合色婷婷 | 中文字幕亚洲不卡 | 亚洲精品理论片 | 欧美视频一区二 | 久久久久日本精品一区二区三区 | 免费看特级毛片 | 天天干天天摸 | 亚洲午夜精品一区 | 色在线国产| 亚洲欧美日韩在线看 | 国产黄色片网站 | 久久99国产精品久久 | 黄色影院在线播放 | 丁香五月亚洲综合在线 | 韩日av在线 | 国产黄在线播放 | 97精品超碰一区二区三区 | 午夜国产在线观看 | 久久av不卡 | 日韩激情在线视频 | 园产精品久久久久久久7电影 | 精品国产_亚洲人成在线 | 日韩丝袜 | 四虎国产永久在线精品 | 亚洲综合在线播放 | 免费看黄网站在线 | av中文字幕网站 | a黄色影院 | 91激情 | 在线日韩视频 | www日韩在线观看 | 久久久久国产免费免费 | 天天色天天操天天爽 | 精品在线视频播放 | 国产一级二级在线播放 | 天天做天天爱天天爽综合网 | 91一区在线观看 | 国内精品福利视频 | 97综合网 | 亚州精品一二三区 | 国产成人a v电影 | 99 色 | 国产97视频| 免费69视频 | 少妇bbb| 亚洲精品资源在线观看 | 丁香六月伊人 | 国产美女视频免费观看的网站 | 人人草天天草 | 久久久福利视频 | 欧美日韩一区三区 | 五月天六月婷 | 99久久99视频只有精品 | 亚洲中字幕 | 91九色在线视频观看 | 在线观看国产成人av片 | 射久久久 | 成人一级片视频 | 亚洲激情精品 | 日韩在线视频二区 | 国产一区二区三区高清播放 | 黄色.com| 91精彩在线视频 | 国产糖心vlog在线观看 | 久久免费成人精品视频 | 国产伦理久久精品久久久久_ | 亚洲国产精品成人女人久久 | 国产无遮挡又黄又爽馒头漫画 | 精品国产伦一区二区三区 | 丝袜美腿在线播放 | 97理论片 | 精品久久久久久久久久久久 | 超碰公开97 | 国产精品久久久久久久久蜜臀 | 美州a亚洲一视本频v色道 | 久久久久伊人 | 久久精品99国产精品亚洲最刺激 | 亚洲天堂网在线播放 | 国产精品第十页 | 永久av免费在线观看 | 日日操狠狠干 | 欧美一级欧美一级 | 精品福利在线 | 国产精品久久婷婷六月丁香 | 久久免费黄色大片 | 婷婷六月综合网 | 成人av片在线观看 | 国产高清久久久 | 国产专区在线视频 | 五月婷av | 亚洲欧洲av在线 | 一区二区三区手机在线观看 | 九九热免费观看 | 中文字幕在线专区 | 水蜜桃亚洲一二三四在线 | 婷婷午夜激情 | 婷婷五综合 | 色在线观看网站 | 午夜精品一区二区三区可下载 | 成人国产精品一区二区 | 在线看成人av | 99久热精品 | 色综合久久综合中文综合网 | 91精品在线免费观看视频 | 99久精品 | 亚洲a资源| 久久麻豆视频 | 亚洲精品美女在线 | 91精品国| 成人免费视频在线观看 | 婷婷国产在线 | 欧美日韩久久久 | 欧美最猛性xxxxx免费 | 久久艹人人 | 中文字幕 91 | 国产免费小视频 | 国产免费av一区二区三区 | 久久久不卡影院 | 国产精品免费久久 | 操操日日| 视频在线精品 | 成人性生交大片免费观看网站 | 国产精品1区2区3区在线观看 | 色婷婷激情五月 | 福利二区视频 | 一区二区av | 欧美精品一区二区蜜臀亚洲 | 国产精彩视频一区二区 | 日韩一区在线免费观看 | 97品白浆高清久久久久久 | 夜夜视频欧洲 | 日本精品视频一区 | 91视频com| .国产精品成人自产拍在线观看6 | 久草在线视频在线观看 | 97看片吧| 91精品久久久久久久久 | 日本中文字幕在线一区 | 日本中文一区二区 | 天天操天天色综合 | 婷婷干五月 | 天天色天天射天天干 | 免费精品国产 | 国产白浆视频 | av色影院 | 国产精品久久久久久久婷婷 | 国产精品视频区 | 欧美日韩亚洲国产一区 | www久久九 | 久久久午夜视频 | 九九热精品国产 | 久久www免费人成看片高清 | 国产福利电影网址 | 日韩电影一区二区三区在线观看 | 日韩精品三区四区 | 性色av香蕉一区二区 | 美女一区网站 | 就操操久久 | 亚洲热视频 | 久久视了 | 欧美网址在线观看 | 成人在线观看影院 | 不卡av电影在线 | 中文字幕日韩一区二区三区不卡 | 国产精品久久久久久久午夜片 | 黄网站污 | 国产精品成人av电影 | 麻豆精品视频在线 | 麻豆免费精品视频 | 99超碰在线观看 | 丁香五月亚洲综合在线 | 尤物一区二区三区 | 久久精品日产第一区二区三区乱码 | 午夜体验区 | 欧美精品被 | 国产精品18毛片一区二区 | 97精品国产91久久久久久久 | 日本mv大片欧洲mv大片 | 久久久污 | 射九九| 伊人资源站 | 日韩免费av在线 | 国产高清在线精品 | 亚洲成av人影片在线观看 | 久久久久久久久毛片精品 | 成人免费在线看片 | 97看片网| av网站手机在线观看 | 天天艹日日干 | 久久精品一区 | 91最新网址| 日日夜夜av | 色a综合| 97精品国产91久久久久久久 | 999成人| 91麻豆福利 | 免费观看性生交大片3 | 国产国语在线 | 成人黄色中文字幕 | 国产精品mv在线观看 | 亚洲色图22p | 久久久国产一区二区三区四区小说 | 91高清视频 | 777xxx欧美| 免费看黄色小说的网站 | 中文字幕一区二区三区四区视频 | 九九视频这里只有精品 | 欧美va日韩va | 毛片激情永久免费 | 国产一级精品在线观看 | 久久九九精品久久 | 激情av五月婷婷 | 天天操天天射天天插 | 亚洲精品乱码久久久久久蜜桃动漫 | 亚洲日本一区二区在线 | 正在播放一区 | 三三级黄色片之日韩 | 国产免费观看视频 | 中文字幕日本特黄aa毛片 | 国产探花 | 午夜精品一二区 | 亚洲精品国产精品国自 | 免费影视大全推荐 | 91精品国产91久久久久福利 | 国产高清视频在线 | 五月婷在线播放 | 久久久久在线观看 | 丁香六月网 | 国产亚洲永久域名 | 一区二区激情视频 | 在线观看国产麻豆 | 久久视频精品在线 | 中文字幕免费高清在线 | av免费黄色 | 久久久免费看视频 | 激情久久五月天 | 色橹橹欧美在线观看视频高清 | 免费a网站 | 久久er99热精品一区二区 | 成人作爱视频 | 国产在线色站 | 久久理论视频 | 精品视频免费久久久看 | 99久久日韩精品视频免费在线观看 | 国产黄色免费在线观看 | 一级理论片在线观看 | 日韩理论片在线 | 伊甸园av在线| 五月婷婷一级片 | 久草久草在线 | 中文字幕中文 | 久久免费黄色 | 九九有精品 | 久久综合九色 | 天天干 天天摸 天天操 | 亚洲视频,欧洲视频 | 久草视频免费在线播放 | 日韩伦理一区二区三区av在线 | 波多野结衣视频一区 | 中文亚洲欧美日韩 | 国产老太婆免费交性大片 | 在线观看免费黄色 | 一本一本久久a久久精品综合妖精 | 国产黄色av影视 | 欧美精品少妇xxxxx喷水 | 久草在线免费新视频 | 不卡av电影在线观看 | 久久久久国产成人免费精品免费 | 韩国一区二区三区视频 | 日韩在线观看的 | 精品国产美女 | 99视频国产精品免费观看 | 香蕉视频在线播放 | 久久精品国产美女 | 97超碰人人澡 | 欧美日韩性视频 | 俺要去色综合狠狠 | a天堂最新版中文在线地址 久久99久久精品国产 | 久久久www成人免费精品张筱雨 | 国产精品一区二区三区久久 | 亚洲男女精品 | 欧美色噜噜 | 国产激情电影综合在线看 | 久久99久久99免费视频 | 国产成人精品一区二区在线 | 日韩中文字幕免费视频 | 在线观看视频黄 | 久草精品视频在线看网站免费 | 69国产精品视频免费观看 | 成人免费视频观看 | 成人小电影在线看 | 天天爱天天操 | 91污在线 | 久久高清 | 色综合久久88色综合天天免费 | 黄色com| 色偷偷88888欧美精品久久久 | 国产精品国产三级国产专区53 | 人人干人人添 | 亚洲国产视频网站 | 欧美一级欧美一级 | 超碰在线人人 | 99在线精品观看 | 少妇精品久久久一区二区免费 | 97精品超碰一区二区三区 | 国产精品久久久久aaaa | 中文字幕电影在线 | 免费99精品国产自在在线 | 欧美性生活免费 | 日韩在线视频免费看 | 91欧美日韩国产 | 久久久国产毛片 | 国产亚洲激情视频在线 | 亚洲成人av在线播放 | 欧美日韩不卡一区 | 999国内精品永久免费视频 | 久久精品96 | 国产免费激情久久 | 99久久er热在这里只有精品66 | 9999国产精品| 久久国产精品影片 | 成人毛片100免费观看 | 国产精品久久久久久a | 欧美一区在线观看视频 | 91精品国产成人www | 一区二区精品国产 | 久久久精品一区二区三区 | 91av中文字幕 | 狠狠色免费 | 久久9999久久免费精品国产 | 国产一级片免费播放 | 久久久在线视频 | 国产欧美精品一区二区三区四区 | 国产 日韩 欧美 自拍 | 成人在线黄色电影 | 色吊丝在线永久观看最新版本 | 91网在线看 | 91成人破解版 | 色综合久久中文综合久久牛 | 西西www444| 丁香5月婷婷久久 | 69xxxx欧美 | 在线视频电影 | 521色香蕉网站在线观看 | 国产精品刺激对白麻豆99 | 在线国产能看的 | 久久精品久久精品久久 | www.夜色.com | 国产韩国日本高清视频 | 国产一级视屏 | 在线观看亚洲免费视频 | 天天综合天天做 | 天天射天天色天天干 | 午夜成人免费电影 | 探花视频免费观看高清视频 | 国产精品va在线播放 | 97色视频在线 | 狠狠干 狠狠操 | 国产一区二区在线看 | 国产特级毛片aaaaaa毛片 | 东方av在 | 日本三级久久久 | 国产精品一区二区吃奶在线观看 | www.久久com| 午夜视频在线网站 | 久久国产免费看 | 岛国av在线免费 | 91精品夜夜 | 亚洲精选久久 | 97视频在线免费播放 | 日日夜夜添| 成人一级免费视频 | 手机看片国产 | 91在线播放国产 | 国产a网站| 国产日本在线 | 国产精品夜夜夜一区二区三区尤 | 一区在线观看视频 | 久久免费视频这里只有精品 | 丁香六月伊人 | 免费在线成人av电影 | 91精品久久久久久综合乱菊 | 久草9视频 | 中文字幕在线观看91 | 96av视频| 国产黄色精品在线 | 夜夜骑日日| 成人app在线免费观看 | 国产麻豆精品久久 | 欧美a视频在线观看 | 天堂av一区二区 | 五月婷婷综合在线 | 天天操天天草 | 免费高清在线视频一区· | 久草综合在线 | 亚洲一级二级三级 | 午夜精品久久久久久久久久久久久久 | 国产96在线 | 日本高清xxxx| 国产做爰视频 | 欧美少妇18p | 日韩黄色免费电影 | 友田真希x88av | 91麻豆精品 | 国产理论在线 | 天天摸天天操天天爽 | www视频在线免费观看 | 国产午夜精品一区二区三区在线观看 | 91最新在线视频 | 麻豆 free xxxx movies hd | 成人久久18免费网站图片 | 天天五月天色 | 久久99精品国产 | 91在线免费观看网站 | 欧美日韩免费视频 | 亚洲精品在线看 | 日韩在线观看视频一区二区三区 | 综合网伊人| 日本激情动作片免费看 | 天堂视频一区 | 天天操天天操天天干 | 久久久久成人精品亚洲国产 | 天天天插 | 国内精品在线观看视频 | 国产淫片 | 六月丁香伊人 | 久久国产品 | 欧美日韩国产色综合一二三四 | 黄色一级免费电影 | 最近日本mv字幕免费观看 | 国产一级性生活 | 在线观看免费版高清版 | 成年人av在线播放 | 亚洲天堂网在线观看视频 | 国产精品成人自拍 | 国产成人精品久久久久蜜臀 | 欧美日韩中文字幕综合视频 | 国产精品二区在线 | 91av在线视频免费观看 | 欧美色操| 国产日产精品一区二区三区四区的观看方式 | 中文字幕永久免费 | 狠狠色伊人亚洲综合网站野外 | 在线观看久久 | 麻豆精品在线视频 | 香蕉久久久久久av成人 | 日韩av成人免费看 | 在线观看精品国产 | 99热国产在线 | 在线黄色毛片 | av久久在线 | 日韩在线网址 | av一区二区三区在线 | 欧美一级特黄aaaaaa大片在线观看 | 在线观看中文字幕亚洲 | 久久综合五月天 | 日本久久免费电影 | 午夜视频在线观看欧美 | 国产亚洲情侣一区二区无 | 天天伊人网 | 亚洲国产成人在线观看 | 9在线观看免费高清完整版在线观看明 | 91探花国产综合在线精品 | 综合色影院 | 黄色录像av | 蜜臀av一区| 欧美黄在线 | 日韩高清成人 | 337p欧美 | 婷婷在线视频观看 | 日黄网站 | 中文国产在线观看 | 中文字幕a∨在线乱码免费看 | 亚洲天堂社区 | www.av小说| 国产亚洲久一区二区 | 在线视频 区 | av日韩国产| 日日操日日干 | 久久er99热精品一区二区三区 | 天天插天天狠 | 91精品国产91热久久久做人人 | 激情欧美一区二区免费视频 | 国产成人精品av在线观 | 久草在线免费看视频 | 国产日韩精品一区二区 | 久久99精品国产91久久来源 | 99视频免费在线观看 | 99视频在线免费播放 | 91大神一区二区三区 | 五月婷婷亚洲 | 天天综合区 | 国产v在线 | 国产成人精品一区二区三区免费 | av在线电影免费观看 | 在线观看日韩专区 | 日韩中文字幕免费在线观看 | 波多野结衣视频一区二区 | 色婷婷激情综合 | 五月婷婷影视 | 精品久久久久久亚洲综合网 | 国产精品高清在线 | 999超碰| 在线成人免费av | 啪啪精品 | 国产亚洲观看 | 玖玖视频精品 | 日韩中文字幕在线观看 | 久草在线视频精品 | 久久免费av电影 | 国产一区二区久久久 | 人人舔人人 | 久久精品国产精品亚洲精品 | 天天射天天操天天干 | 特黄免费av | 波多野结衣一区三区 | 国产精品毛片一区二区在线 | 高清不卡免费视频 | 国产精品久久久久久久妇 | 国产成人精品久久 | 亚洲无吗天堂 | 狠狠黄 | 成年人在线免费看片 | 超碰999 | 在线 高清 中文字幕 | 激情视频综合网 | 日日干日日 | 日韩免费一级a毛片在线播放一级 | 在线观看中文字幕dvd播放 | 久久久久国产精品一区二区 | 天天干天天操天天爱 | 久草资源在线观看 | av片免费播放 | 日韩在线国产精品 | 九热精品 | 免费h视频| 97av在线| 亚洲精品一区二区18漫画 | 日韩精品视频免费在线观看 | 免费在线日韩 | v片在线看 | 国产专区视频在线观看 | 国产精品久久99精品毛片三a | 日韩欧美视频免费观看 | 久草在线免费看视频 | 天天天天天天操 | 99热精品国产一区二区在线观看 | 五月婷婷激情五月 | 日韩.com| 欧美一级免费片 | 成人三级网址 | 一级精品视频在线观看宜春院 | 日本一区二区高清不卡 | 久久久国产精品免费 | 中文字幕精品一区久久久久 | 欧美精品在线观看 | 久久久久久久久久久久久久免费看 | 五月天婷亚洲天综合网精品偷 | 91九色pron| 三级免费黄色 | 国产精品成人一区二区 | 国产精品一区二区在线播放 | 伊人成人久久 | 久久综合免费 | 日韩午夜av | www.五月婷 | 久久国产色 | 娇妻呻吟一区二区三区 | 91超在线 | 欧美色综合 | 中文字幕免费观看全部电影 | 国产精品免费小视频 | 免费观看一区 | 色射色| 成人免费网站视频 | 欧美日韩精品免费观看视频 | 日日干夜夜骑 | 久草在线免费新视频 | 91精品中文字幕 | 午夜视频久久久 | av怡红院| 色婷婷精品大在线视频 | 最新中文在线视频 | 久久国产精品色婷婷 | 婷婷开心久久网 | 在线激情电影 | 97国产电影 | 精品国产乱码 | 国产v在线 | 在线视频 国产 日韩 | 国产v欧美 | 99中文视频在线 | 国产资源av | 中文字幕久久精品亚洲乱码 | av免费电影网站 | 国产成人免费av电影 | 最新中文字幕在线观看视频 | 国产亚洲无| 91刺激视频 | 韩国av在线播放 | 最近中文字幕在线播放 | 91成人天堂久久成人 | 久久久精品欧美 | 日本 在线 视频 中文 有码 | av在线播放观看 | 日韩乱色精品一区二区 | 99久久www| 亚洲不卡av一区二区三区 | 天天干天天做 | 91av欧美 | 久艹视频在线免费观看 | 99久久99视频 | 美女久久久久久久 | 啪啪小视频网站 | 久久99精品热在线观看 | 欧美一区二区精品在线 | 首页中文字幕 | 欧美色图视频一区 | 久久视频免费观看 | 成人试看120秒 | 国产成人精品综合久久久 | 视频在线观看入口黄最新永久免费国产 | 最新国产精品视频 | 亚洲有 在线 | 欧美一区二区三区激情视频 | 日韩av资源站 | 99久久精品无码一区二区毛片 | 天堂在线v | 国产成人一区二区三区电影 | 亚州精品天堂中文字幕 | 黄色亚洲精品 | 超碰在线公开免费 | 久久久免费精品国产一区二区 | 国产精品久久二区 | 啪啪激情网 | 九九视频网 | www,黄视频 | 91传媒免费在线观看 | 精品色综合 | 欧美精品免费一区二区 | 亚洲伦理一区二区 | 在线观看视频97 | 91色网址 | 日韩精品视频免费看 | zzijzzij亚洲成熟少妇 | 国产精品免费久久久久 | 国产在线高清精品 | 九九免费观看视频 | 久久在视频 | 免费色黄 | 天天操比 | 精品亚洲欧美一区 | 天天操人 | 欧美91精品国产自产 | 国产精品一区二区久久精品爱涩 | 欧美激情片在线观看 | 国产私拍在线 | 欧美一级免费在线 | 亚洲电影黄色 | va视频在线观看 | 国产精品女人久久久 | 日韩欧美一区二区三区黑寡妇 | 天天射,天天干 | 国内成人综合 | 国产精品女 | 国内精品久久久精品电影院 | 久久综合加勒比 | www.狠狠插.com | 九九视频免费观看视频精品 | 色多多在线观看 | 在线播放国产精品 | 日韩一二区在线观看 | 精品爱爱 | 国产免费成人 | 人人射网站 | 五月天激情视频 | 国产日产av| 涩涩色亚洲一区 | 欧美伊人网 | 91精品国产一区二区在线观看 | 成人a免费看 | 一区二区三区影院 | 国产美女在线免费观看 | 三级黄色网址 | 一级黄色av | 免费三及片| 人人狠| 蜜臀久久99精品久久久无需会员 | 欧美性网站| 黄色网免费 | 五月天丁香综合 | 国产123av| 在线观看网站av | 69国产精品视频免费观看 | 国内精品免费久久影院 | 99re8这里有精品热视频免费 | 91插插插网站 | 天天做天天爱夜夜爽 | 51精品国自产在线 | 日韩精品一卡 | 成人午夜电影在线观看 | 黄色一级影院 | 久久在线| 中文字幕日韩国产 | 国产精品久久久久免费 | aaa免费毛片| 免费日韩电影 | 日本在线观看一区二区三区 | 狠狠插狠狠干 | 成人精品亚洲 | 五月婷婷操 | 欧美激情亚洲综合 | 日本中文字幕高清 | 国产精品自产拍 | 婷婷色综合网 | 久久综合五月 | 久久久免费在线观看 | 亚洲国产中文在线观看 | 在线观看国产成人av片 | 日韩高清精品一区二区 | 免费日韩一级片 | 激情综合婷婷 | 国产成人三级在线观看 | 国产网站色 | 蜜臀精品久久久久久蜜臀 | 国产人免费人成免费视频 | 免费a v观看 | 操高跟美女 | 在线影院 国内精品 | 偷拍久久久 | 亚洲精品国产拍在线 | 综合色综合 | 四虎影视欧美 | 日韩a在线看 | 国产v在线播放 | 日日综合 | 色欧美88888久久久久久影院 | 在线99热 | 国产精品自产拍 | 777奇米四色 | 久久综合久久久久88 | 亚洲高清视频在线 | 香蕉免费 | 婷婷社区五月天 | 欧美一二三区播放 | 欧美亚洲国产日韩 | 99人久久精品视频最新地址 | 天天射天天添 | 久久黄色影院 | 亚洲国产成人精品电影在线观看 | 视频1区2区 | 欧美精品日韩 | 国产精品久久久久久a | 国产精品久久久久久久久久久不卡 | 欧美一区二区三区在线视频观看 | 午夜三级福利 | 天天干天天射天天插 | 欧美视屏一区二区 | 99精品免费在线观看 | 久久精品99精品国产香蕉 | 天天操天天射天天 | 在线观看亚洲国产 | 91亚洲精品久久久 | 99在线精品视频 | 最近中文字幕视频完整版 | 国产69久久 | 中文字幕 国产视频 | 亚洲高清色综合 | 亚洲影视九九影院在线观看 | 超碰人人在 | 98超碰在线 | 日韩激情在线视频 | 国产精品99蜜臀久久不卡二区 | 人人看人人草 | 人人干在线观看 | 美女国产| 婷婷丁香花五月天 | 人人插人人做 | 国产精品黄色影片导航在线观看 | 91麻豆免费版 | 久久精品网址 | 国产精品系列在线 | 午夜精品一区二区三区可下载 | 丁香伊人网 | 中文字幕免费播放 | 免费在线黄色av | 天堂在线视频中文网 | 国产aa免费视频 | 韩日成人av | 麻豆首页 | 在线精品观看 | 亚洲精品伦理在线 | 一区二区精品在线 | 久久国产视频网站 | 在线观看国产一区二区 | 国产午夜精品久久 | 久久9视频 | 国产热re99久久6国产精品 | 超碰人人草人人 | 91视频免费网站 | 国产精品久久网 | 不卡的av电影 | 精品中文字幕在线播放 | 国产小视频国产精品 | a在线观看国产 | 美女视频是黄的免费观看 | 成人av在线直播 | 国产综合片 | 中文字幕第一页在线视频 | 久久久久亚洲精品中文字幕 | 狠狠做深爱婷婷综合一区 | 啪啪午夜免费 | 免费能看的av | 日韩a在线播放 | 日日摸日日 | 亚洲更新最快 | 婷婷六月丁 | 欧洲视频一区 | 五月天堂色 | 日韩精品久久一区二区三区 | 国产精品av在线免费观看 | 国产理论一区二区三区 | 国产精品网在线观看 | 人人爽人人澡人人添人人人人 | 亚洲欧美国产精品久久久久 | 久久久久久久久网站 | av黄色在线播放 | 日韩久久久久久久久 | 亚洲精选国产 | 日韩激情小视频 | 免费看片网站91 | 亚洲欧洲av | 久久爽久久爽久久av东京爽 | 18做爰免费视频网站 | 亚洲精品2区 | 一级黄色在线视频 | 最新日本中文字幕 | 天天干天天射天天插 | a v在线观看| 久久免费视频在线 | 久久久不卡影院 | 天天拍夜夜拍 | 在线视频日韩一区 | 中文字幕在线国产精品 | 在线观看av麻豆 | 青青草在久久免费久久免费 | 久久久精品小视频 | 少妇18xxxx性xxxx片 | 国产99在线免费 | 特级黄色一级 | 一级黄色视屏 | 国产成人一区二区三区久久精品 | 久久精品2| 成人av地址 | 色婷婷电影网 | 激情综合网色播五月 | 午夜色性片 | 91精品中文字幕 | 国产免费久久久久 | 亚洲日本一区二区在线 | 中文在线资源 | 国产精品久久久久影视 | av中文字幕日韩 | 日韩美av在线 | 欧美精品首页 | 在线观看的av | 精品日韩在线一区 | 日韩在线电影一区 | 看国产黄色大片 | 久久亚洲免费 | 日本3级在线观看 | 99se视频在线观看 | 黄色一级在线观看 | 97成人啪啪网 | 成人看片| 9999精品| 久久久精华网 | 免费又黄又爽的视频 | 成人在线视频观看 | 五月天综合 | 国产精品女主播一区二区三区 | 成人a毛片| av黄色av| 97国产一区二区 | 天堂av在线网 | 欧美精品一区二区在线观看 | 丁香九月激情综合 | 天天干天天干天天 | 免费国产在线视频 | 亚洲伊人成综合网 | 日韩欧美一区二区在线观看 | 色综合人人 | 亚州激情视频 | 日韩欧美一区二区三区视频 | 高清av在线 | 午夜色大片在线观看 | 热久久最新地址 | 久久中国精品 | 美女视频黄免费网站 | 久久av中文字幕片 | www久| 操操操夜夜操 | 国产福利91精品一区 | 亚洲精品在线观看网站 | 免费看黄的视频 |