void QgsMapToolCapture::validateGeometry() { QSettings settings; if ( settings.value( "/qgis/digitizing/validate_geometries", 1 ).toInt() == 0 ) return; if ( mValidator ) { mValidator->deleteLater(); mValidator = 0; } mTip = ""; mGeomErrors.clear(); while ( !mGeomErrorMarkers.isEmpty() ) { delete mGeomErrorMarkers.takeFirst(); } QgsGeometry *g = 0; switch ( mCaptureMode ) { case CaptureNone: case CapturePoint: return; case CaptureLine: if ( mCaptureList.size() < 2 ) return; g = QgsGeometry::fromPolyline( mCaptureList.toVector() ); break; case CapturePolygon: if ( mCaptureList.size() < 3 ) return; g = QgsGeometry::fromPolygon( QgsPolygon() << ( QgsPolyline() << mCaptureList.toVector() << mCaptureList[0] ) ); break; } if ( !g ) return; mValidator = new QgsGeometryValidator( g ); connect( mValidator, SIGNAL( errorFound( QgsGeometry::Error ) ), this, SLOT( addError( QgsGeometry::Error ) ) ); connect( mValidator, SIGNAL( finished() ), this, SLOT( validationFinished() ) ); mValidator->start(); QStatusBar *sb = QgisApp::instance()->statusBar(); sb->showMessage( tr( "Validation started." ) ); }
QgsPolyline QgsOSMDatabase::wayPoints( QgsOSMId id ) const { QgsPolyline points; // bind the way identifier sqlite3_bind_int64( mStmtWayNodePoints, 1, id ); while ( sqlite3_step( mStmtWayNodePoints ) == SQLITE_ROW ) { if ( sqlite3_column_type( mStmtWayNodePoints, 0 ) == SQLITE_NULL ) return QgsPolyline(); // missing some nodes double lon = sqlite3_column_double( mStmtWayNodePoints, 0 ); double lat = sqlite3_column_double( mStmtWayNodePoints, 1 ); points.append( QgsPoint( lon, lat ) ); } sqlite3_reset( mStmtWayNodePoints ); return points; }