本文整理汇总了C++中GeoDataDocument::setFileName方法的典型用法代码示例。如果您正苦于以下问题:C++ GeoDataDocument::setFileName方法的具体用法?C++ GeoDataDocument::setFileName怎么用?C++ GeoDataDocument::setFileName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GeoDataDocument
的用法示例。
在下文中一共展示了GeoDataDocument::setFileName方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fileinfo
//.........这里部分代码省略.........
mDebug() << "multipoint " << placemark->name();
break;
}
case SHPT_ARC: {
if ( shape->nParts != 1 ) {
GeoDataMultiGeometry *geom = new GeoDataMultiGeometry;
for( int j=0; j<shape->nParts; ++j ) {
GeoDataLineString *line = new GeoDataLineString;
int itEnd = (j + 1 < shape->nParts) ? shape->panPartStart[j+1] : shape->nVertices;
for( int k=shape->panPartStart[j]; k<itEnd; ++k ) {
line->append( GeoDataCoordinates(
shape->padfX[k], shape->padfY[k],
0, GeoDataCoordinates::Degree ) );
}
geom->append( line );
}
placemark->setGeometry( geom );
mDebug() << "arc " << placemark->name() << " " << shape->nParts;
} else {
GeoDataLineString *line = new GeoDataLineString;
for( int j=0; j<shape->nVertices; ++j ) {
line->append( GeoDataCoordinates(
shape->padfX[j], shape->padfY[j],
0, GeoDataCoordinates::Degree ) );
}
placemark->setGeometry( line );
mDebug() << "arc " << placemark->name() << " " << shape->nParts;
}
break;
}
case SHPT_POLYGON: {
if ( shape->nParts != 1 ) {
bool isRingClockwise = false;
GeoDataMultiGeometry *multigeom = new GeoDataMultiGeometry;
GeoDataPolygon *poly = 0;
int polygonCount = 0;
for( int j=0; j<shape->nParts; ++j ) {
GeoDataLinearRing ring;
int itStart = shape->panPartStart[j];
int itEnd = (j + 1 < shape->nParts) ? shape->panPartStart[j+1] : shape->nVertices;
for( int k = itStart; k<itEnd; ++k ) {
ring.append( GeoDataCoordinates(
shape->padfX[k], shape->padfY[k],
0, GeoDataCoordinates::Degree ) );
}
isRingClockwise = ring.isClockwise();
if ( j == 0 || isRingClockwise ) {
poly = new GeoDataPolygon;
++polygonCount;
poly->setOuterBoundary( ring );
if ( polygonCount > 1 ) {
multigeom->append( poly );
}
}
else {
poly->appendInnerBoundary( ring );
}
}
if ( polygonCount > 1 ) {
placemark->setGeometry( multigeom );
}
else {
placemark->setGeometry( poly );
delete multigeom;
multigeom = 0;
}
mDebug() << "donut " << placemark->name() << " " << shape->nParts;
} else {
GeoDataPolygon *poly = new GeoDataPolygon;
GeoDataLinearRing ring;
for( int j=0; j<shape->nVertices; ++j ) {
ring.append( GeoDataCoordinates(
shape->padfX[j], shape->padfY[j],
0, GeoDataCoordinates::Degree ) );
}
poly->setOuterBoundary( ring );
placemark->setGeometry( poly );
mDebug() << "poly " << placemark->name() << " " << shape->nParts;
}
break;
}
}
}
SHPClose( handle );
DBFClose( dbfhandle );
if ( document->size() ) {
document->setFileName( fileName );
return document;
} else {
delete document;
return nullptr;
}
}
示例2: file
GeoDataDocument *LogRunner::parseFile(const QString &fileName, DocumentRole role, QString &errorString)
{
QFile file( fileName );
if ( !file.exists() ) {
errorString = QStringLiteral("File %1 does not exist").arg(fileName);
mDebug() << errorString;
return nullptr;
}
file.open( QIODevice::ReadOnly );
QTextStream stream( &file );
GeoDataLineString *const track = new GeoDataLineString;
GeoDataPlacemark *const placemark = new GeoDataPlacemark;
placemark->setGeometry( track );
GeoDataDocument *document = new GeoDataDocument();
document->setDocumentRole( role );
document->append( placemark );
int count = 0;
bool error = false;
while( !stream.atEnd() || error ){
const QString line = stream.readLine();
const QStringList list = line.split(QLatin1Char(','));
if ( list.size() != 7 ) {
mDebug() << Q_FUNC_INFO << "Aborting due to error in line" << count << ". Line was:" << line;
error = true;
break;
}
const QString strLat = list[0];
const QString strLon = list[1];
const QString strElevation = list[2];
const QString strSpeed = list[3];
const QString strCourse = list[4];
const QString strHdop = list[5];
const QString strTime = list[6];
if ( strLat.isEmpty() || strLon.isEmpty() || strElevation.isEmpty() ) {
continue;
}
bool okLat, okLon, okAlt = false;
const qreal lat = strLat.toDouble( &okLat );
const qreal lon = strLon.toDouble( &okLon );
const qreal alt = strElevation.toDouble( &okAlt );
if ( !okLat || !okLon || !okAlt ) {
continue;
}
GeoDataCoordinates coord( lon, lat, alt, GeoDataCoordinates::Degree );
track->append( coord );
}
file.close();
if ( track->size() == 0 || error ) {
delete document;
document = 0;
return nullptr;
}
document->setFileName( fileName );
return document;
}